首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用Java压缩图像大小

用Java压缩图像大小
EN

Stack Overflow用户
提问于 2020-01-09 15:50:40
回答 2查看 2.7K关注 0票数 2

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

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

代码语言:javascript
运行
复制
    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;
    }

问题是-经过图像处理后,我得到的结果-文件大小增加而不是减少。原始图像的大小比压缩的要小。对于如何解决这个问题,有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-09 16:38:42

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

所以我会切换到JPEG并限制大小。

票数 1
EN

Stack Overflow用户

发布于 2020-01-10 09:47:34

作为这个问题的解决方案,我可以推荐TinyPNG的API。

您可以使用它来压缩和调整图像大小。

它适用于.jpeg和.png。

Documentation: https://tinypng.com/developers/reference/java

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59667669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档