【问题标题】:Check Image Half Loaded or Not in Android在 Android 中检查图像是否加载一半
【发布时间】:2015-08-31 18:42:48
【问题描述】:

我从 API 获取图像作为 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());
            }
        }
    }

现在,我面临的问题是,

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

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

编辑:

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

任何帮助将不胜感激。

谢谢。

附上图片供参考:

【问题讨论】:

标签: android image


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    我认为您在检测损坏图像的方向不正确。使用 API 和请求管理已加载(或半加载)的位图会很容易。您还可以拥有一个文件(甚至更好的是数据库),其中包含有关下载图像的信息。

    我看到多项检查,“图片下载了吗?”

    • API 应该告诉你你想要的图像的预期大小 下载。加载完成后,您必须检查尺寸和 比较它们是否相等
    • 您可以通过什么错误代码检测您的请求已完成。如果它使用成功代码完成,您可以标记您的图像已加载

    在显示之后,您可以检测哪些图像已完全加载。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-11
      • 1970-01-01
      • 2016-01-05
      • 2013-03-08
      • 2014-01-04
      • 1970-01-01
      相关资源
      最近更新 更多