티스토리 뷰

반응형
반응형

이미지를 불러 오는 부분에서 해당 에러 발생

 

javax.imageio.IIOException: Unsupported Image Type

javax.imageio.IIOException: Unsupported Image Type
at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(JPEGImageReader.java:1063)
at com.sun.imageio.plugins.jpeg.JPEGImageReader.read(JPEGImageReader.java:1034)
at javax.imageio.ImageIO.read(ImageIO.java:1448)
at javax.imageio.ImageIO.read(ImageIO.java:1308)

 

이미지 타입이 일반적으로 RGB와 CMYK 타입이 있는데, CMYK 타입인 경우는 ImageIO.read()를 이용하여 읽을 경우 위와 같은 에러가 발생한다. 검색해 보니, CMYK 타입을 RGB로 잘못 변환하게 되면 이미지가 반전되거나 색이 이상하게 나타나는 경우가 많다 한다.

 

고민하던 중 okky(https://okky.kr/article/249200)에서 zepinos님의 댓글을 참고하여 twelvemonkeys를 통해 문제 해결.

 

라이브러리 추가

twelvemonkeys-common-lang-3.4.2.jar

twelvemonkeys-common-io-3.4.2.jar

twelvemonkeys-common-image-3.4.2.jar

twelvemonkeys-imageio-core-3.4.2.jar

twelvemonkeys-imageio-metadata-3.4.2.jar

twelvemonkeys-imageio-jpeg-3.4.2.jar

 

소스 변경 없이 이미지 변환 성공

 

 

최신 버전(2019/12 기준 3.5 버전) 은 자바 7 이상이면 되고, 이전 버전(3.0.x)은 최소 자바 6 버전이어야 한다.

라이브러리 내부적으로 SPI(Service Provider Interface)를 이용하여 ,소스 변경 없이 cmyk를 rgb로 변환하는것 같다.

 

SPI(Service provider interface)

영어에서 번역됨-서비스 제공 업체 인터페이스는 타사에서 구현하거나 확장하기위한 API입니다. 프레임 워크 확장 및 교체 가능한 구성 요소를 활성화하는 데 사용할 수 있습니다.
출처 : 위키백과 

위키 설명만 보면 이해가 잘 되지 않는다. 아래 블로그에서 API와 SPI의 차이에 대해 잘 설명하고 있기에 보면 조금 더 이해가 쉬울 듯 싶다.

SPI는 공급자를 대상으로하며 다음과 같은 속성이 있습니다.
- SPI는 소프트웨어 또는 플랫폼의 동작을 확장/변경하는 방법입니다. (프로그래밍 가능 또는 프로그래밍 방식)
- SPI 진화는 API 진화와 다릅니다. SPI 제거는 문제가 아닙니다.
- SPI 인터페이스를 추가하면 문제가 발생하고 기존 구현이 손상될 수 있습니다.
출처 : https://12bme.tistory.com/353
 

[프로그래밍] SPI와 API 차이

SPI와 API의 차이점 API는 API(Application Programming Interface)의 약자로 API는 일종의 소프트웨어나 플랫폼에서 제공하는 서비스/기능에 액세스 하는 수단입니다. SPI는 SPI(Service Provider Interface)의..

12bme.tistory.com

 

 

참고: 

 

https://github.com/haraldk/TwelveMonkeys#manual-dependency-example

 

haraldk/TwelveMonkeys

TwelveMonkeys ImageIO: Additional plug-ins and extensions for Java's ImageIO - haraldk/TwelveMonkeys

github.com

https://okky.kr/article/249200

 

OKKY | 자바에서 이미지를 불러오는데..

이미지 타입이 rgb가 아니라 cmyk라 ImageIO.read()로 부르면 Exception in thread "main" javax.imageio.IIOException: Unsupported Image Type at com.sun.imageio.plugins.jpeg.JPEGImageReader.readInternal(Unknown Source)

okky.kr

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함