image 메타정보 및 색상 추출(rgb, cmyk)

image 메타정보 및 색상 추출(rgb, cmyk)

java에서 이미지 메타 정보를 추출할 경우 rgb와 cmyk의 포멧이 다를 경우 지원하지 않는 타입(Unsupported Image Type) 에러가 발생한다.

rgb와 cmyk의 read는의 경우 다르게 구현하여야 한다.

● 이미지 포멧 RGB 이미지 메타 추출

try { String imageUrl = "http://RGBimageURL"; imageUrl = UriUtils.encodePath(imageUrl, Charset.forName("utf-8")); InputStream input = new URL(imageUrl).openStream(); BufferedImage image = ImageIO.read(input); int width = image.getWidth(); int height = image.getHeight(); int clr = image.getRGB(0, 0); int red = (clr & 0x00ff0000) >> 16; int green = (clr & 0x0000ff00) >> 8; int blue = clr & 0x000000ff; Color c = new Color(red, green, blue); String backgroundColor = "#" + String.format("%06x", c.getRGB() & 0x00ffffff); System.out.println(width + " " + height); System.out.println("color : " + backgroundColor); } catch (Exception e) { e.printStackTrace(); }

● 이미지 포멧 CMYK 이미지 메타 추출

// Create a new RGB image

BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);

cmyk를 rgb(TYPE_4BYTE_ABGR) 형태로 변환해 주는 것입니다.

http://cris.joongbu.ac.kr/course/java/api/java/awt/image/BufferedImage.html

try { String imageUrl = "http://CMYKImageUrl"; imageUrl = UriUtils.encodePath(imageUrl, Charset.forName("utf-8")); InputStream input = new URL(imageUrl).openStream(); BufferedInputStream in=new BufferedInputStream(input); final ImageInputStream stream=ImageIO.createImageInputStream(in); final Iterator readers=ImageIO.getImageReaders(stream); final ImageReader reader=(ImageReader)readers.next(); reader.setInput(stream,true); Raster raster = reader.readRaster(0, null); BufferedImage bi = new BufferedImage(raster.getWidth(), raster.getHeight(), BufferedImage.TYPE_4BYTE_ABGR); bi.getRaster().setRect(raster); System.out.println(bi.getWidth() + " " + bi.getHeight()); int clr = bi.getRGB(0, 0); int red = (clr & 0x00ff0000) >> 16; int green = (clr & 0x0000ff00) >> 8; int blue = clr & 0x000000ff; Color c = new Color(red, green, blue); String backgroundColor = "#" + String.format("%06x", c.getRGB() & 0x00ffffff); System.out.println("color : " + backgroundColor); } catch (Exception e) { e.printStackTrace(); }

참고 URL

https://whitecold89.tistory.com/17

from http://myborn.tistory.com/19 by ccl(A) rewrite - 2021-12-24 12:27:27