gpt4 book ai didi

java - 如何在 Java 中压缩 jpeg 图像而不丢失该图像中的任何元数据?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:04 27 4
gpt4 key购买 nike

我想使用 Java 压缩 jpeg 文件。我这样做:

  1. 将图像读取为BufferedImage
  2. 以压缩率将图像写入另一个文件。

好吧,这看起来很简单,但我发现 ICC 颜色配置文件和 EXIF 信息在新文件中消失了,图像的 DPI 从 240 下降到 72。它看起来与原始图像不同。我在 OS X 中使用了类似预览的工具。它可以完美地改变图像的质量而不影响其他信息。

我可以用 Java 完成吗?至少保留 ICC 颜色配置文件,让图像颜色看起来与原始照片相同?

最佳答案

/**
* @param inputFilenameWithPath : binary filepath
* @param outputFilepath : output image path
* @param start : from where the image start in binary file
* @param len : length of the image
* @throws ImageAccessException
*/
public void extractImageFromBinaryFile(String inputFilenameWithPath, String outputFilepath, int start, int len) throws ImageAccessException
{
try
{
File file = new File(inputFilenameWithPath);
FileImageInputStream iis = new FileImageInputStream(file);

// Added
byte[] b = new byte[start];
iis.read(b, 0, start);

byte[] fb = new byte[]{};
iis.read(fb);

IIOByteBuffer iiob = new IIOByteBuffer(fb, start, len);
iis.readBytes(iiob, len);

OutputStream os = new FileOutputStream(outputFilepath);
os.write(iiob.getData());
iis.close();
os.close();

}
catch (IOException ioe)
{`enter code here`
throw new ImageAccessException("Image File read/write error");
}
}

关于java - 如何在 Java 中压缩 jpeg 图像而不丢失该图像中的任何元数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/948368/

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