I’m trying to make all white pixels transparent using the Python Image Library. (I’m a C hacker trying to learn python so be gentle) I’ve got the conversion working (at least the pixel values look correct) but I can’t figure out how to convert the list into a buffer to re-create the image. Here’s the code
img = Image.open('img.png') imga = img.convert('RGBA') datas = imga.getdata() newData = list() for item in datas: if item[0] == 255 and item[1] == 255 and item[2] == 255: newData.append([255, 255, 255, 0]) else: newData.append(item) imgb = Image.frombuffer('RGBA', imga.size, newData, 'raw', 'RGBA', 0, 1) imgb.save('img2.png', 'PNG')
You need to make the following changes:
(255, 255, 255, 0)and not a list[255, 255, 255, 0]img.putdata(newData)This is the working code: