Уменьшите размер файла JPG в java - PullRequest
0 голосов
/ 31 марта 2020

Мы создали файл JPG с использованием org.openqa.selenium.TakesScreenshot class

File src = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
File dest = new File("C:\\Users\\admin\\Desktop\\Images\\29_18-03-20-07-11-47.jpg");
FileHandler.copy(src, dest);

Поскольку размер сгенерированного изображения составляет от 1,5 МБ до 2,9 МБ. Мы хотим уменьшить размер файла до kbs.

мы пробовали ImageIO, но сгенерированное изображение не имеет исходного цветового пространства файла / цветового профиля.

File input = new File("C:\\Users\\admin\\Desktop\\Images\\29_18-03-20-07-11-47.jpg");
File compressedImageFile = new File("C:\\Users\\admin\\Desktop\\Images\\compressed_image7.jpg");

BufferedImage image = ImageIO.read(input);
OutputStream os = new FileOutputStream(compressedImageFile);
Iterator<ImageWriter writers = ImageIO.getImageWritersByFormatName("jpg");

ImageWriter writer = (ImageWriter) writers.next();
ImageOutputStream ios = ImageIO.createImageOutputStream(os);
writer.setOutput(ios);

ImageWriteParam param = writer.getDefaultWriteParam();
param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
param.setCompressionQuality(0.05f);         
writer.write(null, new IIOImage(image, null, null), param);

Не удалось открыть изображение или экран. shot

Может кто-нибудь сообщить мне, как я могу уменьшить размер файла

1 Ответ

1 голос
/ 31 марта 2020

Попробуйте использовать JPEG с потерями

ImageWriter writer= (ImageWriter) ImageIO.getImageWritersByFormatName("jpeg").next();
ImageWriteParam param= writer.getDefaultWriteParam();
param.setCompressionMode(param.MODE_EXPLICIT);
param.setCompressionType("JPEG-LS");
writer.setOutput(ImageIO.createImageOutputStream(new File(path)));
writer.write(null, new IIOImage(image, null, null), param);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...