java - 在java中减少JPG文件的文件大小

标签 java selenium screenshot filesize javax.imageio

我们使用以下方法生成了一个 JPG 文件 org.openqa.selenium.TakesScreenshot

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.5MB 到 2.9MB。我们希望将文件大小减少到 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);

无法共享图像或屏幕截图

有人可以告诉我如何减少文件大小

最佳答案

尝试使用无损 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);

关于java - 在java中减少JPG文件的文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60946908/

相关文章:

Java - 使用 catch block 内的方法返回语句和抛出的异常?

python - 为什么我会收到很多关于 chromedriver 的 ConnectionResetErrors?

python - 如何每六分钟从网站下载一张图像?

android - 移动设备上的程序化屏幕捕获

java - 使用没有 WSDL 的 Java 的 Soap 客户端服务 - 如何?

java - 在未转义的空间拆分

javascript - nodejs - 检查图像是否为空白

iPhone和iPad,播放视频时截图

java - 如何发送对象,就像我可以使用 PrintWriter 发送字符串一样

django - Selenium:find_element_by_link_text - TypeError:类型 'WebElement' 的对象没有 len()