WhatsApp は、共有時に画像の複製コピーを作成します。イメージの解像度は同じですが、元のイメージとそのコピーの MD5 チェックサムが異なります。どうしてこれなの?これが重複した画像であることをアプリに認識させるにはどうすればよいですか。
MD5 と Sha-1 を試してみましたが、どちらのアルゴリズムも 2 つの画像に対して異なるチェックサムを生成しました。
WhatsApp は、共有時に画像の複製コピーを作成します。イメージの解像度は同じですが、元のイメージとそのコピーの MD5 チェックサムが異なります。どうしてこれなの?これが重複した画像であることをアプリに認識させるにはどうすればよいですか。
MD5 と Sha-1 を試してみましたが、どちらのアルゴリズムも 2 つの画像に対して異なるチェックサムを生成しました。
メタデータにおそらく違いがあるようです。たとえば、コピーが作成されたときにタイムスタンプがWhatsAppサーバーによって変更された可能性があります。
画像のピクセルデータを取得し、その上でチェックサムを実行することをお勧めします。Bitmap.getPixels()メソッドを使用できます。例えば:myBitmap.getPixels(pixels, 0, myBitmap.getWidth(), 0, 0, myBitmap.getWidth(), myBitmap.getHeight());
チェックサムが同じであるからといって、必ずしも画像が同じであるとは限らないことを忘れないでください。チェックサムが一致する場合は、画像が同一であることを100%確認するために、データの要素ごとの比較を行う必要があります。
編集:ここ に、同等性についてピクセルごとのテストを行う方法の良い例があります。API 12以降を使用している場合は、 Bitmap.sameAs()メソッドを使用できることに注意してください。