msyz999明仕亚洲官网PIL模块mode转换题目讨教

我想要抵达的目标是将一张图片中灰度形式小于阀值的像素点交换为透明,但是题目是灰度形式没有alpha通道,只要先转换为RGBA形式才行,如今想到的办法便是树立一张映射表,可以有更优雅的处理办法吗?

#Allocate memory for images
front_px = front_L.load
back_px = back_L.load


threshold = 224
for x in range0,width:
    for y in range0,height:
        grayValue = front_px[x,y]
        ifgrayValue<threshold:
            front_px[x,y] = 0
            
            

更新:在网上查找到getdata,putdata办法,的确比循环更高效,但是我陷进了一个循环,convertL之后它又会把透明像素添补为白色,吃完饭再想办法

front_RGBA = front.convertRGBA


datas_RGBA = front_RGBA.getdata
datas_L = front_L.getdata


threshold = 224
newData = []
for index,item in enumeratedatas_L:
    if item < threshold:
        newData.appenddatas_RGBA[index]
    else:
        newData.append255,255,255,0

front_RGBA.putdatanewData
front_RGBA.save"images/img.png"
img_L = front_RGBA.convertL
img_L.save"images/img_L.png"

第二次更新: 题目曾经自己处理了- -,查了下RGBA转灰度图的公式,试了下比较复杂的一种做出来结果很好了,谢谢存眷题目的人。代码:

threshold = 224
newData = []
for item in datas_L:
    if item < threshold:
        newData.appenditem,item,item,256
    else:
        newData.append255,255,255,0

front_RGBA.putdatanewData
front_RGBA.save"images/img.png"

(看完/读完)这篇文章有何感想! msyz999明仕亚洲官网的分享…

发表评论

姓名 *
电子邮件 *
站点