JPG 이미지 파일을 가지고 있는데, BufferedImage에로드하고 나중에 BufferedImage를 JPG 파일에 다시 쓰려고합니다. 여기 내가 현재하고있는 일이있다.품질을 유지하면서 JPG 이미지를 읽고/쓰는 가장 빠른 방법은 무엇입니까?
품질을 떨어 뜨리지 않고 더 빨리 읽고 쓸 수있는 더 좋은 방법이 있습니까?
읽기 :
BufferedImage image = ImageIO.read(new File(storagePath + fileName + extension));
쓰기 :
BufferedImage image = // some jpg image
Iterator iter = ImageIO.getImageWritersByFormatName("JPG");
if (iter.hasNext()) {
ImageWriter writer = (ImageWriter) iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
iwp.setCompressionQuality(quality);
File outFile = new File(storagePath + fileName + extension);
FileImageOutputStream output = new FileImageOutputStream(outFile);
writer.setOutput(output);
IIOImage iioImage = new IIOImage(image, null, null);
writer.write(null, iioImage, iwp);
}
벤치 마크를 수행하지는 않았지만 PNG가 빠를 수도 있습니다. PNG는 항상 무손실입니다. –
알아요.하지만 더 많은 기억이 필요합니다. 그리고 내 질문이 아니었다 –
이것 좀보세요 : http://stackoverflow.com/questions/7982409/is-jpeg-lossless-when-quality-is-set-to-100 –