从Android Bitmap对象生成md5总和

时间:2013-03-01 13:13:54

标签: java android bitmap md5

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

我有一个android.graphics.Bitmap对象,我需要得到它的md5总和。在我想验证总和的时候,它还没有保存到文件系统中。我已经看到了几种为java.io.File对象执行此操作的方法。我只需要一个接收Bitmap对象的函数,并将hex md5 sum作为String返回。

这可能已在某个地方得到解决,但如果是这样的话,我一直无法理解它或从中推断出如何做到这一点。

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

2 个答案:

答案 0 :(得分: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 here中找到如何获取字节数组的md5哈希。

答案 1 :(得分:0)

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

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

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

然后从它计算md5总和应该不是问题。