2013-05-22 4 views
1

Thumbnailator을 사용하여 큰 크기 (0.5-10MB) 이미지의 썸네일을 생성 할 계획입니다. 코드를 살펴본 결과 ImageIO이 미리보기 이미지를 만드는 데 사용됨을 확인했습니다.이미지 IO 또는 썸네일 네이터와 함께 NIO 사용

나는 이미지 파일과 그 기술 분야 및 ImageIO 패키지에 대한 초보자입니다. 내가 알고 싶은 것은 ImageIO가 NIO를 사용하여 파일을 읽고 축소판을 생성 할 수 있는지 여부입니다. 이렇게하면 미리보기 이미지를 생성하는 데 도움이되며 이미지 당 4 개의 미리보기 이미지, 0.5MB에서 10MB의 이미지, 평균적으로 초당 약 30 개의 요청을 생성해야합니다.

+0

NIO가'java.io' 스트림보다 빠르게 파일을 읽게된다고 생각하게 만드는 이유는 무엇입니까? 시간은 I/O를 수행하지 않고 이미지를 처리하는 데 소요됩니다. – EJP

+0

@EJP, Isot NIO는'io'보다 빠릅니까? 이미지를 처리 ​​할 때도 이점을 얻고 싶습니다. 대부분의 CPU가 미리보기 이미지를 생성하고 IO를 기다리지 않고 사용되는 것에 동의합니다. – coderSam

+0

상자에 들어있는 라이브러리를 사용하여 어떤 유형의 성능을 벤치 마크하기 위해 개념 유형 증명의 증거를 만들었습니까? – haraldK

답변

0

ImageIO는 ImageInputStream이라는 스트림을 통해 추상화를 사용합니다. 여러 구현은, InputStream 바탕으로 존재 RandomAccessFile

귀하의 질문에 대답하기 위해, ImageIO에서이 NIO (예를 들어 FileChannel)의 지원 ImageInputStream의를 제공하기 위해 네,이 플러그인을 만들 수 있습니다. ImageInputStreamSpi 클래스를 살펴보십시오.

그러나 이것은 기존의 구현이 RandomAccessFile (기존의 많은 클래스가 도입되었을 때 NIO의 혜택을 받기 위해 개조 된 것)에 비해 훨씬 개선 될지 잘 모르겠습니다.

잠재적으로 많은 성능을 향상시킬 수있는 한 가지는 디스크 캐싱을 끄기 위해 ImageIO.setUseCache(false)을 호출하는 것입니다 (메모리 캐싱을 희생 시키겠다).

불행히도 Thumbnailator를 모르므로이 옵션이 귀하의 경우 성능에 어떤 영향을 미치는지 말씀 드릴 수 없습니다.

+0

성능을 추출하는 것부터 스프린트 작업을 제공하는 것까지 초점이 바뀜에 따라 다음 주에 결과를 게시 해 보겠습니다. – coderSam

+1

궁금 해서요, 이것으로 어떤 진전을 보였습니까? – haraldK