Привет я хотел бы знать, существует ли какой-либо путь в Java для сокращения размера изображения (используйте любой вид сжатия), который был загружен как BufferedImage и будет сохраненным как PNG.
Возможно, своего рода png imagewriteparam? Я ничто не нашел полезным, таким образом, я застреваю.
вот образец, как образ загружается и сохраняется
public static BufferedImage load(String imageUrl) {
Image image = new ImageIcon(imageUrl).getImage();
bufferedImage = new BufferedImage(image.getWidth(null),
image.getHeight(null),
BufferedImage.TYPE_INT_ARGB);
Graphics2D g2D = bufferedImage.createGraphics();
g2D.drawImage(image, 0, 0, null);
return bufferedImage;
}
public static void storeImageAsPng(BufferedImage image, String imageUrl) throws IOException {
ImageIO.write(image, "png", new File(imageUrl));
}
Обратите внимание на класс ImageWriterParam
в том же пакете, что и класс ImageIO
. Здесь упоминается сжатие.
https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageWriteParam.html
Также посмотрите пример на http://exampledepot.com/egs/ javax.imageio / JpegWrite.html и посмотрите, хорошо ли он переводится для файлов PNG.
Если будет сохранен как PNG
, сжатие будет выполнено на этом этапе. PNG имеет алгоритм сжатия без потерь (в основном прогнозирование с последующим сжатием lempel-ziv) с несколькими настраиваемыми параметрами (типы « filter ») и не сильно влияет на степень сжатия - в целом оптимальным будет значение по умолчанию.