从URL保存的图像部分为灰色

时间:2012-04-26 11:01:35

标签: image url inputstream fileoutputstream

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

以下是我用来保存图片的方法:

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();
}

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

1 个答案:

答案 0 :(得分:1)

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