作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
当我阅读某些 JPG 文件时,颜色变平了。这是一个简单的示例,它读取一个 jpg 并将相同的图像写入另一个文件。
import java.awt.image.BufferedImage;
import java.io.File;
import javax.imageio.ImageIO;
public class JPegReadTest {
public static void main(String[] args) {
if (args.length == 2) {
try {
BufferedImage src = ImageIO.read(new File(args[0]));
ImageIO.write(src, "jpg", new File(args[1]));
} catch (Exception e) {
e.printStackTrace();
}
} else {
System.err.println("Usage: java JPegReadTest src dest");
}
}
}
如果您尝试使用例如 http://www.flickr.com/photos/visualpanic/233508614/sizes/l/ ,目标图像的颜色与源文件不同。这是为什么?如何解决?
还尝试将图像保存为 png,但其中的颜色也很乏味(因此假设颜色信息未正确读取)。
最佳答案
可能有几个原因。
我实际上并没有尝试你的例子......你能把文件前后都贴出来吗?如果不能实际检查结果文件,就很难判断这些额外数据是否存在。
编辑:是的,很明显您的原始图像和转换后的图像具有不同的颜色配置文件。 Java 剥离了原始的颜色配置文件并使用通用的 sRGB 代替。在使用 Firefox 和各种程序的 Windows 上,它们在我们看来是一样的,因为这些程序在渲染器时不使用颜色配置文件。但是,在您的 Mac 上,Mac 实际上支持这些颜色配置文件(提示关于 Mac 的图形等争论),因此它们呈现不同。我手边没有 Mac,但我怀疑如果你在任何平台上的 Photoshop 中打开这些文件,你都会看到不同之处。
关于java - 为什么 Java ImageIO 会展平 JPEG 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1271658/
我是一名优秀的程序员,十分优秀!