라이브러리
image 메타정보 및 색상 추출(rgb, cmyk)
탄생
2021. 12. 24. 12:05
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();
}