我想使用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;
}
问题是-处理完图像后,我得到了结果-文件大小增加而不是减小。原始图像的尺寸小于压缩后的尺寸。 有关如何解决此问题的任何建议?