Files
pyDefis/RO Plan chiffré de l'étoile de la mort.py
Francois JUMELLE 20526d93c8 Initial release
2021-05-03 22:32:40 +02:00

46 lines
2.5 KiB
Python

from PIL import Image, ImageOps
image = Image.open("fragment_chiffre.png")
key = [0, ]
image = ImageOps.grayscale(image)
width, height = image.size
img = list()
#convert image to list of lists
for y in range(height):
row = list()
for x in range(width):
row.append(image.getpixel((x,y)))
img.append(row)
for i in range(0, height-1):
min_delta = (width*255*4, width*2)
for d in range(width):
delta = 0
for x in range(width):
delta += abs(img[i][x] - img[i+1][(x+d)%width])
if delta < min_delta[0]:
min_delta = (delta, d)
print(i, min_delta)
d = min_delta[1]
img[i+1] = img[i+1][d:] + img[i+1][:d]
# key = key + [758, 757, 755, 751, 743, 727, 695, 631, 503, 247, 494, 229, 458, 157, 314, 628, 497, 235, 470, 181, 362, 724, 689, 619, 479, 199, 398, 37, 74, 148, 296, 592, 425, 91, 182, 364, 728, 697, 635, 511, 263, 526, 293, 586, 413, 67, 134, 268, 536, 313, 626, 493, 227, 454, 149, 298, 596, 433, 107, 214, 428, 97, 194, 388, 17, 34, 68, 136, 272, 544, 329, 658, 557, 355, 710, 661, 563, 367, 734, 709, 659, 559, 359, 718, 677, 595, 431, 103, 206, 412, 65, 130, 260, 520, 281, 562, 365, 730, 701, 643, 527, 295, 590, 421, 83, 166, 332, 664, 569, 379, 758, 757, 755, 751, 743, 727, 695, 631, 503, 247, 494, 229, 458, 157, 314, 628, 497, 235, 470, 181, 362, 724, 689, 619, 479, 199, 398, 37, 74, 148, 296, 592, 425, 91, 182, 364, 728, 697, 635, 511, 263, 526, 293, 586, 413, 67, 134, 268, 536, 313, 626, 493, 227, 454, 149, 298, 596, 433, 107, 214, 428, 97, 194, 388, 17, 34, 68, 136, 272, 544, 329, 658, 557, 355, 710, 661, 563, 367, 734, 709, 659, 559, 359, 718, 677, 595, 431, 103, 206, 412, 65, 130, 260, 520, 281, 562, 365, 730, 701, 643, 527, 295, 590, 421, 83, 166, 332, 664, 569, 379, 758, 757, 755, 751, 743, 727, 695, 631, 503, 247, 494, 229, 458, 157, 314, 628, 497, 235, 470, 181, 362, 724, 689, 619, 479, 199, 398, 37, 74, 148, 296, 592, 425, 91, 182, 364, 728, 697, 635, 511, 263, 526, 293, 586, 413, 67, 134, 268, 536, 313, 626, 493, 227, 454, 149, 298, 596, 433, 107, 214, 428, 97, 194, 388, 17, 34, 68, 136, 272, 544, 329, 658, 557, 355, 710, 661, 563, 367, 734, 709, 659, 559, 359, 718, 677, 595, 431, 103, 206, 412, 65, 130, 260, 520, 281, 562, 365, 730, 701, 643, 527, 295, 590, 421, 83, 166, 332, 664, 569, 379, 758, 757, 755, 751, 743]
# for i in range(len(key)):
# d = width - key[i]
# img[i] = img[i][d:] + img[i][:d]
#Rebuild image
for y in range(height):
for x in range(width):
image.putpixel((x, y), img[y][x])
image.save("fragment_dechiffre.png")
image.show()