Java图像压缩
答
JPG和PNG图像已经是压缩,所以它不完全清楚你的意图是什么。然而,在一般情况下,你可以写ImageIO
图片:
ImageIO.write(image, "jpg", outputStream);
(或"png"
,类似)。默认情况下,这不允许您选择压缩级别(即文件大小和图像质量之间的折衷)。为了编写具有比默认压缩不同的JPG文件,你可以使用一个实用的方法是这样的:
public static void writeJPG(
BufferedImage bufferedImage,
OutputStream outputStream,
float quality) throws IOException
{
Iterator<ImageWriter> iterator =
ImageIO.getImageWritersByFormatName("jpg");
ImageWriter imageWriter = iterator.next();
ImageWriteParam imageWriteParam = imageWriter.getDefaultWriteParam();
imageWriteParam.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
imageWriteParam.setCompressionQuality(quality);
ImageOutputStream imageOutputStream =
new MemoryCacheImageOutputStream(outputStream);
imageWriter.setOutput(imageOutputStream);
IIOImage iioimage = new IIOImage(bufferedImage, null, null);
imageWriter.write(null, iioimage, imageWriteParam);
imageOutputStream.flush();
}
+0
嗨Marco13,谢谢你的回复。让我详细说明一下。我们正在构建一个realstats应用程序,有很多属性,每个属性都有10到30个.jpeg图像。当选择一个属性时,会显示相应的图像。有什么办法来压缩/缩小图像的大小加载速度?让我知道你是否想要更多细节 –
+0
压缩通常只是间接地与*加载*图像所需的时间相关。压缩映像可能加载速度更快(因为需要从硬盘读取更少的数据),但这必须通过基准进行验证(尽管我怀疑可能会明智地验证此操作)。可能优化的一般提示(如在后台线程中缓存或预加载图像)超出了本评论的范围。 – Marco13
JPEG和PNG图像* *被压缩。 – Boann
我认为你需要看图像切片。 Photoshop有这个,它使图像加载速度更快。请检查切片技术,看看是否可以帮助你。 – Soley