Используя PIL для создания всех белых пикселей прозрачными?

Это будет работать:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import datetime

if __name__ == '__main__':
    a = "2019-03-07T11:50:03.161033+01:00"
    b = datetime.datetime.strptime(a, "%Y-%m-%dT%H:%M:%S.%f%z").strftime("%z")

    print(b)

Вывод :

+0100

52
задан Frank Krueger 19 April 2009 в 06:44
поделиться

2 ответа

Вам необходимо внести следующие изменения:

  • добавить кортеж (255, 255, 255, 0) и не список [255, 255, 255, 0]
  • use img.putdata (newData)

Это рабочий код :

from PIL import Image

img = Image.open('img.png')
img = img.convert("RGBA")
datas = img.getdata()

newData = []
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)

img.putdata(newData)
img.save("img2.png", "PNG")
75
ответ дан 7 November 2019 в 09:11
поделиться

Вы также можете использовать режим доступа к пикселям для изменения изображения на месте:

from PIL import Image

img = Image.open('img.png')
img = img.convert("RGBA")

pixdata = img.load()

width, height = image.size
for y in xrange(height):
    for x in xrange(width):
        if pixdata[x, y] == (255, 255, 255, 255):
            pixdata[x, y] = (255, 255, 255, 0)

img.save("img2.png", "PNG")
39
ответ дан 7 November 2019 в 09:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: