gpt4 book ai didi

java - 图像分辨率发生变化,但我只是想旋转图像

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

这段代码会改变原始 JPEG 的分辨率吗?我可以理解文件大小是否不同,因为 JPEG 质量设置可能不同,但我不明白为什么这会调整图像大小。

File newfile=new File(mydestinationfolder.concat(imagename));
Files.move(file.toPath(),newfile.toPath(), REPLACE_EXISTING);
Rotation Orientation;
if ((Orientation=Exif_data.get_Exif_Orientation(newfile)) != null) {

System.out.println(Orientation.toString());
BufferedImage oldimage = ImageIO.read(newfile);
BufferedImage tmp = Scalr.rotate(oldimage, Orientation);
oldimage.flush();
oldimage=tmp;
ImageIO.write(oldimage, "JPEG", newfile);

}

最佳答案

我不知道为什么,但 ImageIO.write() 的默认设置正在更改分辨率。如果我定义一个自定义编写器并将 JPEG 质量设置为 100%,则图像分辨率保持不变。

注意:最后的output.close()很重要,因为只要流打开,文件就会被锁定。

BufferedImage oldimage = ImageIO.read(newfile);
BufferedImage tmp = Scalr.rotate(oldimage, Orientation);
oldimage.flush();
oldimage=tmp;
Iterator iter = ImageIO.getImageWritersByFormatName("jpeg");
ImageWriter writer = (ImageWriter)iter.next();
ImageWriteParam iwp = writer.getDefaultWriteParam();
iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
float quality=1.0f;
iwp.setCompressionQuality(quality);

FileImageOutputStream output = new FileImageOutputStream(newfile);
writer.setOutput(output);

IIOImage image = new IIOImage(oldimage, null, null);
writer.write(null, image, iwp);
writer.dispose();
output.close();

关于java - 图像分辨率发生变化,但我只是想旋转图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17036357/

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