【发布时间】:2013-12-27 02:37:11
【问题描述】:
当我保存这张图片时:
用这个方法:
private final static Path ROOT_PATH = Paths.getPath("C:/images");
private static void saveImageFromWebSimple(final String url) {
URL u = null;
try {
u = new URL(url);
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String file = url.substring(url.indexOf("//") + 2);
Path filePath = ROOT_PATH.resolve(file);
try {
Files.createDirectories(filePath.getParent());
BufferedImage img = ImageIO.read(u);
ImageIO.write(img, "jpg", filePath.toFile());
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的结果:
但并非所有图片都会出现这种情况。
你能告诉我为什么吗?
【问题讨论】:
-
1)
ImageIO.write(img, "jpg", filePath.toFile());JPEG 不能保证保留 准确 颜色,但我认为这超出了它通常会改变它们的范围。 2)如果下载它,只需“逐字节”保存它,而不是使用ImageIO(用于读取或写入)。 -
如果使用
ImageIO加载该图像并直接显示它(不涉及任何保存到磁盘),我们可以看到相同的结果。我以前见过这个,但忘记了原因,因此很难找到答案.. -
好像是这样。在问这个 Q 之前我已经做过研究,但没有发现。我从原版链接到这个 Q 以获得更多关注,因为它并没有真正关闭恕我直言。
-
“这不是真的恕我直言。” 这不是真的什么?
-
现在那是有道理的。感谢您的澄清。
标签: java bufferedimage javax.imageio