on
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