티스토리 뷰
반응형
반응형
이미지를 불러 오는 부분에서 해당 에러 발생
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
참고:
https://github.com/haraldk/TwelveMonkeys#manual-dependency-example
https://okky.kr/article/249200
반응형
'jvm언어관련 > java' 카테고리의 다른 글
Slf4j MDC(Mapped Diagnostic Context) 사용 (1) | 2020.12.07 |
---|---|
JVM 이해하기 (0) | 2019.09.18 |
java.lang.UnsupportedClassVersionError (0) | 2019.09.17 |
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure (0) | 2019.07.23 |
@NotEmpty @NotNull @NotBlank (0) | 2019.06.12 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- update query multi row
- 뱅크샐러드
- 뱅셀 유전자
- update query set multiple
- 몽고DB 완벽가이드
- 슬랙 /
- java
- gradle
- 이펙티브자바
- 이것이 자바다
- 뱅크샐러드 유전자
- update query mutiple row
- effectivejava
- 업데이트 쿼리
- multiple row update
- update query
- visual studio code
- vue.js
- update set multi
- 슬랙
- 싱글턴
- SpringBoot
- MSSQL
- 그레이들
- 다중 업데이트
- Slack
- spring-boot-starter-data-redis
- update set multiple
- 슬랙봇
- springboot https
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함