【问题标题】:Image saved from URL is partly gray从 URL 保存的图像部分是灰色的
【发布时间】:2012-05-07 02:34:01
【问题描述】:

我正在编写一个程序来保存来自 Internet 的图像,但有些图像最终变成了部分灰色。或者它只是真的是灰色的图标,因为如果我打开图像它根本不是灰色的。

这是我用来保存图像的方法:

public static void saveImage(String imageUrl, String destinationFile) throws IOException{
    URL url = new URL(imageUrl);
    InputStream is = url.openStream();
    OutputStream os = new FileOutputStream(destinationFile);

    byte[] b = new byte[2048];
    int length;

    while ((length = is.read(b)) != -1) {
        os.write(b, 0, length);
    }

    is.close();
    os.close();
}

我认为问题在于我在图像完全写入之前关闭了流。有什么方法可以检查它是否完成或什么?

【问题讨论】:

  • 代码看起来不错。 “图标”是什么意思?您可以在图像/图标完全写入之前提供它吗?你想等到这个 saveImage 方法完成。

标签: image url inputstream fileoutputstream


【解决方案1】:

当您在 Windows 资源管理器中打开文件夹并在代码写入图像的同时刷新时,会发生此行为。 Windows 将尝试创建缩略图。在文件的第一部分,所有的“headerinfo”都被存储了,所以windows会知道图像有多大等等。由于并非所有数据都存在,因此该部分的缩略图将变为灰色。

【讨论】:

  • 啊,你说得对,我觉得现在在这里问太傻了>_
  • 别觉得自己很傻。我也花了一些时间才发现这种行为:)
猜你喜欢
  • 1970-01-01
  • 2023-03-14
  • 2021-12-18
  • 1970-01-01
  • 2012-03-30
  • 1970-01-01
  • 2015-01-02
  • 2014-08-04
相关资源
最近更新 更多