티스토리 뷰
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();
}
'라이브러리' 카테고리의 다른 글
Spring boot 에 caffeine cache 적용하기 (0) | 2022.06.15 |
---|---|
java deep copy 비교 (0) | 2022.05.19 |
java Exception 발생 재시도 (0) | 2021.08.30 |
bean validation 수동 호출 (0) | 2021.06.30 |
JsonDiff vs MapDifference (0) | 2021.04.20 |
댓글
공지사항