RGB 图像修改为什么要改三组数?

请看下方python代码 “img.putpixel((i,j),(234,53,57,255))” RGB不不是一共三个值么?这一行要将特定像素改成大红色,为什么会出现四组数?为什么不是改三组数?

这段代码在处理比较大的图片(1024*168像素)处理完以后CPU释放了。但是内存没有释放,请问是为什么?应该如何让程序执行完以后释放内存?

from PIL import Image

i = 1
j = 1
img = Image.open("e:/pic/222.jpg")#读取系统的内照片
print (img.size)#打印图片大小
print (img.getpixel((4,4)))

width = img.size[0]#长度
height = img.size[1]#宽度
for i in range(0,width):#遍历所有长度的点
    for j in range(0,height):#遍历所有宽度的点
        data = (img.getpixel((i,j)))#打印该图片的所有点
        print (data)#打印每个像素点的颜色RGBA的值(r,g,b,alpha)
        print (data[0])#打印RGBA的r值
        if (data[0]>=170 and data[1]>=170 and data[2]>=170):#RGBA的r值大于170,并且g值大于170,并且b值大于170
            img.putpixel((i,j),(234,53,57,255))#则这些像素点的颜色改成大红色
img = img.convert("RGB")#把图片强制转成RGB
img.save("e:/pic/testee1.jpg")#保存修改像素点后的图片
————————————————
版权声明:本文为CSDN博主「徐为波」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xwbk12/java/article/details/78998196


转自链接:https://learnku.com/python/t/46359
版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
讨论数量: 1
Jason990420

上回不是说了

不知道你的JPG怎么会是RGBA,JPG不支持复制,应该是RGB。

你检查一下img.modeRGB 还是 RGBA

“RGB”-彩色图像3层,3字节/转换,真彩色

“RGBA”-彩色图像4层,4字节/转换,使用mask的真彩色

说不定你的e:/pic/222.jpg,不是jpg文件

内存? 可能你还没有结束python,img变量还存在,可以试试del img

4年前 评论
Jason990420 (作者) 4年前
kakabobo (楼主) 4年前
kakabobo (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!