使用Java压缩图像大小

我想使用Java压缩(缩小)图像大小。我们可以上传jpg / jpeg / png格式的图像。图像的一般格式为PNG。因此,将图像上传到服务器后,我们需要压缩(减小文件大小)并将其转换为PNG。

我有用于压缩图像的下一个代码:

    BufferedImage bufferedImage = ImageIO.read(inputStream);
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

    switch (imageType) {
        case PNG:
        case JPG:
            // need Java 9+ for PNG writer support
            ImageWriter writer = ImageIO.getImageWritersByFormatName(imageType.getExtension()).next();
            ImageOutputStream ios = ImageIO.createImageOutputStream(outputStream);
            writer.setOutput(ios);

            ImageWriteParam param = writer.getDefaultWriteParam();
            if (param.canWriteCompressed()) {
                param.setCompressionmode(ImageWriteParam.MODE_EXPLICIT);
                param.setCompressionQuality(0.3f);
            }

            writer.write(null,new IIOImage(bufferedImage,null,null),param);
            writer.dispose();
            return new ByteArrayInputStream(outputStream.toByteArray());
        default:
            log.warn("Image type unknown");
            return null;
    }

问题是-处理完图像后,我得到了结果-文件大小增加而不是减小。原始图像的尺寸小于压缩后的尺寸。 有关如何解决此问题的任何建议?

hxcn2004 回答:使用Java压缩图像大小

作为解决此问题的方法,我建议使用TinyPNG的API。
您可以将其用于压缩和调整图像大小。

它同时适用于.jpeg和.png。

文档 tinypng.com/developers/reference/java

,

不幸的是,有损JPEG压缩比无损PNG压缩要好得多。您可以限制图像的宽度和高度,并按比例缩放。

所以我将切换为JPEG并限制大小。

本文链接:https://www.f2er.com/2796395.html

大家都在问