Python PIL | RGB值错误

时间:2018-10-17 18:05:34

标签: python python-imaging-library rgb steganography

我正在编写一个隐写术程序。我可以在没有PIL的情况下使用它,但是它只能与位图一起使用,因此我进行了一些研究,发现并学习了一般的PIL。我将自己的算法转换为与PIL兼容,并且看起来可以正常工作,但是当我去解码时,它似乎将数字无处不在。经过一些调试后,我相信会有一种排序的模式,因为它只有几个值可以关闭。

为进一步调试,我创建了一个类似的程序,该程序使图像完全变红,然后重新打开并读取其像素值,但是,我似乎遇到了相同的错误。奇怪的是,我使用Python 2的计算机科学老师没有遇到此错误。我想知道是否有更多经验丰富的PIL用户知道这是为什么以及所有修复程序。我正在Windows 10上使用Python 3。

这是我的代码(这是我为调试而编写的程序):

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")

0 个答案:

没有答案