Я пишу скрипт для шифрования и дешифрования изображения в python3 с использованием PIL.Здесь я конвертирую изображение в массив numpy, а затем умножаю каждый элемент массива на 10. Теперь я заметил, что функция по умолчанию в PIL fromarray () конвертирует каждый элемент массива в мод 256, если он больше, чем255, поэтому, когда я пытаюсь получить исходное значение матрицы, я не получаю исходное значение.Например, если исходное значение равно 40, то его 10-кратное значение равно 400, поэтому функция fromarray () делает его равным 400 мод 256, что даст 144. Теперь, если я добавлю 256 к 144, у меня будет 400, а затем разделить на 10,дайте мне 40. Но если значение 54, то 10 раз равно 540, а 540 мод 256 равно 28. Теперь, чтобы вернуть исходное значение, мне нужно добавить 256 два раза, что даст мне 540. 540 не единственное число, которое будетдайте мне 28, когда я сделаю мод с 256. Поэтому я никогда не узнаю, когда добавить 256 один раз, а когда два или более.
Вот код:
from PIL import Image
from numpy import *
from pylab import *
#encryption
img1 = (Image.open('image.jpeg').convert('L'))
img1.show() #displaying the image
img = array(Image.open('image.jpeg').convert('L'))
a,b = img.shape
print(img)
print((a,b))
tup = a,b
for i in range (0, tup[0]):
for j in range (0, tup[1]):
img[i][j]= img[i][j]*10 #converting every element of the original array to its 10times
print(img)
imgOut = Image.fromarray(img)
imgOut.show()
imgOut.save('img.jpeg')
#decryption
img2 = (Image.open('img.jpeg'))
img2.show()
img3 = array(Image.open('img.jpeg'))
print(img3)
a1,b1 = img3.shape
print((a1,b1))
tup1 = a1,b1
for i1 in range (0, tup1[0]):
for j1 in range (0, tup1[1]):
img3[i1][j1]= ((img3[i1][j1])/10) #reverse of encryption
print(img3)
imgOut1 = Image.fromarray(img3)
imgOut1.show()
Теперь, когда функция, делающая свои элементы модом 256, я не могу получить исходное значение из значения мода.Как я могу получить исходное значение. Существуют ли другие методы для преобразования матрицы в изображение и наоборот, которые не сделают его модом из любого числа по умолчанию.
Теперь я не знаю, как справиться с этой проблемой.Любая помощь будет принята с благодарностью. Спасибо.