Я использую следующий код:
from PIL import Image
import os
path = 'C:/Users/User/Desktop/GF_BSIF/temp'
newData = []
for image in os.listdir(path):
img = Image.open(path+'/'+image)
img = img.convert("RGBA")
datas = img.getdata()
for item in datas:
if item[0] == 255 and item[1] == 255 and item[2] == 255:
newData.append((255, 255, 255, 0))
else:
if item[0] > 150:
newData.append((0, 0, 0, 255))
else:
newData.append(item)
print(item)
img.putdata(newData)
img.save('C:/Users/User/Desktop/GF_BSIF/temp'+'/'+"open_science_logo_transparent.png", "PNG")
Оригинал:
Result:
введите описание изображения здесь
Результат не делает фон прозрачным.
Как улучшить код и сделать черный фон прозрачным?
EDIT:
from PIL import Image
import matplotlib.pyplot as plt
import os
import shutil
path = 'C:/Users/User/Desktop/GF_BSIF/temp'
out_put = 'C:/Users/User/Desktop/data science/cropped'
newData = []
for image in os.listdir(path):
img = Image.open(path+'/'+image)
img = img.convert("RGBA")
datas = img.getdata()
for item in datas:
if all(i == 0 for i in datas[0:3]):
newData.append((0, 0, 0, 0))
else:
etcetcetc
img.putdata(newData)
img.save('C:/Users/User/Desktop/GF_BSIF/temp'+'/'+"open_science_logo_transparent.png", "PNG")
@ NotActuallyErik
Выдает ошибку
TypeError Traceback (последний вызов последний)
в 14 15 для элемента в данных: ---> 16, если все (i == 0 для i в данных [0: 3]): 17 newData .append ((0, 0, 0, 0)) 18 else:
TypeError: индекс последовательности должен быть целым числом, а не «срезом».
Как это исправить?