Я пытался прочитать изображения в значениях ASCII и сравнить два изображения для точного соответствия значений ASCII.Однако вывод очень большой, и мое оборудование очень старое и не может прочитать вывод, я попытался сохранить вывод в файл, и файл был огромным.Вот что я пытаюсь сделать:
orig = sys.stdout
f = open('output.txt','w')
sys.stdout = f
# Load the two Images
with open("image1.jpg", "rb") as b:
with open("image2.jpg", "rb") as a:
# Convert the two images from binary to ascii
chunk1 = binascii.b2a_hex(b.read())
chunk2 = binascii.b2a_hex(a.read())
# split the two chunks of ascii values into a list of 24 bytes
chunkSize = 24
for i in range (0,len(chunk1),chunkSize):
for j in range (0,len(chunk2),chunkSize):
# Print them
list1 = chunk1[i:i+chunkSize]
print "List1: "+ list1
list2 = chunk2[j:j+chunkSize]
print "List2: " + list2
# Compare the two images for equality
list = list1 == list2
# print whether its a match or false
print list
sys.stdout = orig
f.close()
# Saved to a file
Как это работает:
img1 имеет следующий гекс: FFD8 FFE0 0010 4A46 4946 0001 0200 0064 0064 0000 FFEC 0011 img2 имеетследующий гекс: FFD8 FFE0 0010 4A46 4946 0001 0210 0064 0064 0000 FFEC 0012
Это займет первые 24 символа img1 и проверит его по всем гексам img2 за 24 символа, а затем возьмет следующие 24символы из img1 и проверить все гексагоны img2.Пример:
List1: FFD8 FFE0 0010 4A46 4946 0001
List2: FFD8 FFE0 0010 4A46 4946 0001
True
List1: FFD8 FFE0 0010 4A46 4946 0001
List2: 0210 0064 0064 0000 FFEC 0012
False
List1: 0200 0064 0064 0000 FFEC 0011
List2: FFD8 FFE0 0010 4A46 4946 0001
False
List1: 0200 0064 0064 0000 FFEC 0011
List2: 0210 0064 0064 0000 FFEC 0012
False
Тем не менее, вывод велик, учитывая огромные изображения, такие как 40-килограммовые шестнадцатеричные и 20-килобайтные, которые я не могу прочитать с терминала, ни сохраняя выходные данные в файл.
Как распечатать только совпадающие (True) 24-значные шестнадцатеричные значения ASCII без печати истинных, ложных и ложных шестнадцатеричных значений ASCII?
FFD8 FFE0 0010 4A46 4946 0001