检查Android中已加载或未加载的图像

时间:2015-06-16 05:09:03

标签: android image

我从API获取Image作为BLOB类型。而且,我保存如下,

public static void setOptimalImage(Context ctx, File file, ImageView iv,
            Point size) {
        BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeFile(file.getPath(), options);
        if (options.outHeight > 0 && options.outWidth > 0) {
            if (size == null) {
                size = new Point();
                WindowManager wm = (WindowManager) ctx
                        .getSystemService(Context.WINDOW_SERVICE);
                wm.getDefaultDisplay().getSize(size);
            }
            options.inSampleSize = Utils.calculateInSampleSize(options, size.x,
                    size.y);
            options.inJustDecodeBounds = false;
            try {
                iv.setImageBitmap(BitmapFactory.decodeFile(file.getPath(),
                        options));
            } catch (OutOfMemoryError oome) {
                Log.e(Utils.class.getName(),
                        oome.getMessage() == null ? "OutOfMemory error: "
                                + file.getName() : oome.getMessage());
            }
        }
    }

现在,我面临的问题是,

当我保存它时,有时图像只能保存一半。现在,我的问题是,

  • 有没有办法检查文件路径中的图像是否已加载一半(这意味着已损坏)?

修改

  • 我正从服务器下载图片。同时,我失去了我的网络连接。在那种情况下,我的图像下载了一半。我能以编程方式获取那些损坏的图像吗?或者知道如何处理这个案例?

任何帮助都会非常感激。

感谢。

附加图片以供参考:

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为你会查看检测到损坏图像的错误方向。使用API​​和请求管理加载(或半加载)位图会很容易。您还可以拥有一个文件(甚至更好的数据库),您可以在其中获得有关下载图像的信息。

我看到多次检查,"是否已下载图片?"

  • API应该告诉您想要的图像大小 下载。装载完成后,您必须检查尺寸和 比较是等于
  • 您可以检测到您的请求完成的错误代码。如果已完成成功代码,则可以标记图像已加载

在显示过程中,您可以检测到哪些图像已满载。

答案 1 :(得分:0)

理想情况下,您应该让API返回每个文件的校验和(例如MD5)。然后,您可以在Android中使用相同的算法为下载的文件生成校验和,并将其与API返回的文件进行比较。查看java.security.MessageDigest类,了解有关如何生成校验和的详细信息。