4

我花了几个小时试图弄清楚如何做到这一点。我已经在 stackoverflow 和文档上阅读了一个又一个的帖子。

我有一个 android.graphics.Bitmap 对象,我需要得到它的 md5 总和。在我想验证它尚未保存到文件系统的总和时。我已经看到了几种对 java.io.File 对象执行此操作的方法。我只需要一个接收位图对象并将十六进制 md5 和作为字符串返回的函数。

这可能已经在某处得到解决,但如果是这样,我就无法理解它或从中推断出如何做到这一点。

当然,该方法的资源越少越好。

4

2 回答 2

9

获取位图的字节以计算 md5。

Bitmap bm = ... // your bitmap
ByteArrayOutputStream baos = new ByteArrayOutputStream();  
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object   
byte[] bitmapBytes = baos.toByteArray();

所以你现在有字节数组。您可以在此处找到如何在 android 中获取字节数组的 md5 哈希。

于 2013-03-01T13:27:22.157 回答
0

我不是 Android 开发人员,但我在 API 参考 ( http://developer.android.com/reference/android/graphics/Bitmap.html ) 中看到有以下方法:

  • 获取位图的大小:getWidth、getHeight
  • 将像素作为整数数组获取:getPixels

因此,您可以创建一个所需大小的数组,然后读取所有像素,并将该数组转换为 byte[]。

那么从中计算md5 sum应该不是问题。

于 2013-03-01T13:24:09.480 回答