Thumbnailator 는 자바 1.5 이상이면 사용이 가능하다.
1. Maven 에서 Thumbnailator 사용하기
pom.xml 파일의 dependencies 항목에 아래와 같이 추가한다.
net.coobird thumbnailator [0.4, 0.5)
2. 자바에서 섬네일 이미지 생성하기
이제 아래와 같이 사용하면 된다.
Thumbnails.of(new File("original.jpg"))
.size(160, 160)
.toFile(new File("thumbnail.jpg"));
다만 일부 OS 에서는 섬네일 이미지가 0 크기로 생성되는 오류가 발생된다. (Mac 과 Windows 에서는 대부분 동작) . 이런 문제를 해결하기 위하여 아래와 같이 javax.imageio 을 함께 사용하여 문제를 해결하였다.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 32 33 34 35 36 37 38 39 40 | import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.io.InputStream; import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.ReentrantLock; import javax.imageio.ImageIO; public class ThumbnailMaker { private Lock lock = new ReentrantLock(); public File getThumbnailImage(File image, int width, int height) { try { lock.lock(); File dir = File("/thumbnails"); // Thumbnail 이미지를 저장할 장소 File file = new File(dir, toThumbnailFilename(attachment, width, height)); BufferedImage thumbnail = Thumbnails.of(image).size(width, height).asBufferedImage(); ImageIO.write(thumbnail, "png", file); // //Thumbnails.of(image).allowOverwrite(true).size(width, height).outputFormat("png").toOutputStream(new FileOutputStream(file)); // return file; } catch (IOException e) { throw new NotFoundException(e); } finally { lock.unlock(); } } protected String toThumbnailFilename(File file, int width, int height) { StringBuilder sb = new StringBuilder(); sb.append( file.getName() ).append("_").append(width).append("_").append(height).append(".png"); return sb.toString(); } } | cs |
댓글 없음:
댓글 쓰기