Python PIL |Значения RGB неверны - PullRequest
0 голосов
/ 17 октября 2018

Я делаю стеганографическую программу.Я заставил его работать без PIL, но он работает только с растровыми изображениями, поэтому я провел небольшое исследование и нашел и изучил общий PIL.Я преобразовал свой алгоритм, чтобы он был совместим с PIL, и похоже, что он работает, но когда я иду на декодирование, кажется, что он вытягивает числа из ниоткуда.После некоторой отладки я полагаю, что существует своего рода шаблон, потому что это всего лишь несколько значений.

Для дальнейшей отладки я создал похожую программу, которая делает изображение полностью красным, затем снова открывает его и читаетзначения пикселей, однако, я, кажется, сталкиваюсь с той же ошибкой.Странно то, что мой учитель информатики, который использует Python 2, не сталкивается с этой ошибкой.Мне было интересно, знают ли еще опытные пользователи PIL, почему это и какие-то исправления.Я использую Python 3 в Windows 10.

Вот мой код (это программа, которую я сделал для отладки):

from PIL import Image

def redify(file_name): #Function that turns the whole image red
    image = Image.open(file_name)
    image = image.convert("RGB")
    pixels = list(image.getdata())

    fileTypeIndex = 0
    for i in range(0,len(file_name)):
        if file_name[-i] == ".":
            fileTypeIndex = i
            break

    for x in range(0,len(pixels)):
        pixels[x] = 255,0,0

    final = Image.new(image.mode,image.size)
    final.putdata(pixels)
    final.save(file_name[:-fileTypeIndex] + "_redified" + file_name[-fileTypeIndex:])

def readImage(file_name): #Fucntion that opens an image and reads its data
    image = Image.open(file_name)
    image = image.convert("RGB")
    rgbList = list(image.getdata())
    print(rgbList) # This returns every pixel as (254,0,0)
                   # When I set each pixel to 0,255,0 it returns (0,255,1)
                   # When I set each pixel to 0,0,255 it returns (0,0,254)
                   # All of these shouldn't be occuring


redify("moon.jpg")
readImage("moon_redified.jpg")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...