現在、Windowsホストからの画像からローカルの敏感なハッシュを作成するスクリプトを、debianの画像に移動しています。
私の問題は、両方のプラットフォームで同じソース画像から異なる画像データを返すということです。
私はjpegのこの動作しか観察しませんでした。
テストケース:同じソースからの枕で異なる画像データ
from PIL import Image
import md5
import urllib2
from cStringIO import StringIO
urls = ("https://i.imgur.com/Mx6NQwM.jpg","https://i.imgur.com/MN1TKu5.png")
print("VERSION %s" % Image.VERSION)
for url in urls:
response = urllib2.urlopen(url).read()
img = Image.open(StringIO(response)).convert("RGB")
img_md5 = "".join("".join(map(chr, x)) for x in img.getdata())
print("URL: %s" % url)
print("Plain md5:\t%s" % md5.new(response.read()).hexdigest())
print("Image md5:\t%s" % md5.new(img_md5).hexdigest())
は、両方のシステムで同じMD5ハッシュを返す必要があります。 マイ結果:
のWindows 7:
VERSION 1.1.7
URL: https://i.imgur.com/Mx6NQwM.jpg
Plain md5: 4aacd5b92575ffca6d0ab884f95cc1f9
Image md5: 10eaf568f4d9d33c722ea702fc4d1025
URL: https://i.imgur.com/MN1TKu5.png
Plain md5: d05e6dc1311339b806e5998f15fc818c
Image md5: 38fc986c5cd9605038ee627b11687344
Debianのジェシーは:それは問題であるために
VERSION 1.1.7
URL: https://i.imgur.com/Mx6NQwM.jpg
Plain md5: 4aacd5b92575ffca6d0ab884f95cc1f9
Image md5: 7347c6286f4d917649d967a5025e392e
URL: https://i.imgur.com/MN1TKu5.png
Plain md5: d05e6dc1311339b806e5998f15fc818c
Image md5: 38fc986c5cd9605038ee627b11687344
LSHsは多少似ているが、十分に異なっています。
両方のシステムのピローバージョンは2.9.0です。
私はWindowsのように、debianシステムで同じピクセル値を取得する方法はありますか?
一般的に、誰かがこれが起こっている理由を知っていますか?
枕が両方のシステムでjpegファイルを正しく処理しているかどうかを確認するには、両方のシステムでデータを表示するか、pngに変換してからmd5を計算してみましたか? –
@SteveBarnesちょうど試してみて、画像が正しく見えていて、pngへの変換が期待される結果を返しました(最初の画像では違い、2番目の画像でも同じです) – SleepProgger