Я хочу сжать (уменьшить) размер изображения, используя 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;
}
проблема в том - после обработки изображения я получил результат - размер файла увеличился, а не уменьшился. Исходное изображение имеет меньший размер, чем сжатое. Любые предложения о том, как решить эту проблему?