4

これを行う方法を理解するために数時間を費やしました。私は、スタックオーバーフローとドキュメントに関する投稿を次々と読みました。

android.graphics.Bitmap オブジェクトがあり、md5 サムを取得する必要があります。合計を確認したい時点で、ファイル システムに保存されていません。java.io.File オブジェクトに対してこれを行ういくつかの方法を見てきました。Bitmap オブジェクトを受け取り、16 進数の 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の合計を計算することは問題ではないはずです。

于 2013-03-01T13:24:09.480 に答える