以编程方式减小JPEG文件大小 [英] Programmatically Reducing JPEG file size
问题描述
为任何无知而道歉,但是我以前从未在Java中使用过jpeg图像(更不用说任何类型的图像了)。
Apologies for any ignorance, but I have never worked with jpeg images (let alone any types of images) in Java before.
假设我想发送jpeg Web服务到客户端的图像。有什么方法可以通过以某种方式处理图像的颜色配置文件来减小jpeg文件的大小?
Supposing I want to send a jpeg image from a web service to a client. Is there any way that I can reduce the jpeg file size by manipulating the colour profile of the image in some way?
我已经能够通过以下方式减小图像大小:使用名为 imgscalr
的整齐的BufferedImages工具对其进行缩放。请参见此处。
I have already been able to reduce the image size by scaling it using a neat tool for BufferedImages called imgscalr
. See here.
我还希望jpeg的颜色少于高质量的jpeg图像。例如,我希望能够在jpeg中使用8位颜色而不是16位颜色。
I would also like a jpeg that has less colours than a high quality jpeg image. For example, I would like to be able to use 8bit colour in my jpeg instead of say 16bit colour.
如果我有一个BufferedImage,我将需要更改什么? Java的2D软件包?
What exactly would I need to change if I have a BufferedImage from Java's 2D package?
推荐答案
减小图像大小的另一种方法是更改压缩级别。您可以使用ImageWriter做到这一点。
Another way to reduce image size is to change compression level. You can do that using ImageWriter.
ImageWriter writer = null;
Iterator<ImageWriter> iwi = ImageIO.getImageWritersByFormatName("jpg");
if (!iwi.hasNext())
return;
writer = (ImageWriter) iwi.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT) ;
iwp.setCompressionQuality(compressionQuality);
writer.setOutput(...);
writer.write(null, image, iwp);
这篇关于以编程方式减小JPEG文件大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!