Я пытаюсь изменить значения из PNG-изображения в оттенках серого, а затем создать изображение из этих измененных значений.
Первым шагом, который я сделал, было использование Python-реализации libpng . После этого я смог получить список всех значений пикселей PNG. Это изображение серой шкалы, поэтому значения от 0 до 100. Я делаю быстрый алгоритм для изменения значений. А потом я пытаюсь создать его в новый файл PNG. Все в одной строке, поэтому я использую регулярное выражение для форматирования в 2D-массив.
Я попытался использовать это, что нашел здесь
from PIL import Image
import numpy as np
pixels = [[100,0,0],[0,100,0],[0,0,100]]
# Convert the pixels into an array using numpy
array = np.array(pixels)
print(array)
# Use PIL to create an image from the new array of pixels
new_image = Image.fromarray(array, 'L')
new_image.save('testing.png')
Но я предполагаю, что форматирование, которое использует PIL, отличается от того, что делает libpng, вместо того, чтобы делатьизображение, которое выглядит как 3 белых пикселя по диагонали, я получаю только 1 белый пиксель в левом верхнем углу. Так что либо я изменяю значения, полученные из libpng, чтобы numpy работал, либо я нахожу в libpng что-то, что позволит мне напрямую изменить значения и создать новый файл.