gpt4 book ai didi

Java克隆jpg而不损失图像质量

转载 作者:行者123 更新时间:2023-12-02 03:33:40 25 4
gpt4 key购买 nike

我有以下方法将 jpg 照片从一个文件夹复制到另一个文件夹:

public static void copyImage(String from, String to) {
try {
File sourceimage = new File(from);
BufferedImage image = ImageIO.read(sourceimage);
ImageIO.write(image, "jpg", new File(to));
} catch (IOException ex) {
Logger.getLogger(ImgLib.class.getName()).log(Level.SEVERE, null, ex);
} catch (NullPointerException ex){
Logger.getLogger(ImgLib.class.getName()).log(Level.SEVERE, null, ex);
}
}

它可以工作,但照片质量有点下降。

如何在不损失质量的情况下实现“完美”克隆?

最佳答案

是的,你说得对。在这一行中:

ImageIO.write(image, "jpg", new File(to));

您的方法仍在对图像数据进行重新编码,而使用像 JPEG 这样的有损格式,将不可避免地导致图像保真度的损失。

我想,您可以尝试使用以下代码复制图像文件:

    InputStream is = null;
OutputStream os = null;
try {
is = new FileInputStream(new File("path/to/img/src"));
os = new FileOutputStream(new File("path/to/img/dest"));
byte[] buffer = new byte[8192];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
} finally {
is.close();
os.close();
}

此外,您可以使用 Apache Commons IOUtils 来简化从一个流到另一个流的复制,或者如果您使用的是 Java 8,则只需调用 Files.copy方法。

关于Java克隆jpg而不损失图像质量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37717767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com