以编程方式减少JPEG文件大小

Joe*_*dev 8 java graphics jpeg 2d

为任何无知道歉,但我以前从未使用Java中的jpeg图像(更不用说任何类型的图像)了.

假设我想将一个jpeg图像从Web服务发送到客户端.有没有什么办法可以通过某种方式操纵图像的颜色配置文件来减少jpeg文件的大小?

我已经能够通过使用一个叫做BufferedImages的简洁工具来缩小图像大小imgscalr.看到这里.

我还想要一个颜色比高质量jpeg图像少的jpeg.例如,我希望能够在我的jpeg中使用8位颜色而不是16位颜色.

如果我有来自Java的2D包的BufferedImage,我究竟需要改变什么呢?

Lev*_*ich 5

减小图像大小的另一种方法是更改​​压缩级别。您可以使用 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);
Run Code Online (Sandbox Code Playgroud)

  • @Joeblackdev:这就是答案。JPEG 仅适用于全调色板。如果您想使用其他格式(png 或 gif),您可以选择缩短调色板。 (3认同)