以编程方式减小 JPEG 文件大小 [英] Programmatically Reducing JPEG file size

查看:32
本文介绍了以编程方式减小 JPEG 文件大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

对任何无知表示歉意,但我以前从未在 Java 中处理过 jpeg 图像(更不用说任何类型的图像)了.

Apologies for any ignorance, but I have never worked with jpeg images (let alone any types of images) in Java before.

假设我想从 Web 服务向客户端发送 jpeg 图像.有什么办法可以通过以某种方式操纵图像的颜色配置文件来减小 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.

如果我有一个来自 Java 2D 包的 BufferedImage,我到底需要改变什么?

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆