У меня есть файлы изображений JPG, которые я хочу загрузить в BufferedImage, а позже напишу BufferedImage обратно в файл JPG. Вот что я сейчас делаю.Самый быстрый способ чтения/записи изображений JPG без потери качества?
Есть ли лучший способ не потерять качество и ускорить чтение/запись?
Read:
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 –