2016-12-10 7 views
1

Я хочу использовать paste библиотеки python PIL для вставки изображения на черный фон.Python-Imaging-Library только вставлять изображения с 255 alpha

Я знаю, что могу использовать само изображение как альфа-маску, но я только хочу, чтобы иметь части изображения, где альфа-значение .

Как это возможно?


Вот мой код до сих пор:

import PIL 
from PIL import Image 

img = Image.open('in.png') 
background = Image.new('RGBA', (825, 1125), (0, 0, 0, 255)) 

offset = (50, 50) 

background.paste(img, offset, img) #image as alpha mask as third param 
background.save('out.png') 


Я ничего не могу найти в официальной, но плохо documentation

ответ

1

Если я правильно понимаю ваш вопрос, то это возможное решение. Он генерирует специальную маску, которая используется для пасты:

from PIL import Image 

img = Image.open('in.png') 

# Extract alpha band from img 
mask = img.split()[-1] 
width, height = mask.size 

# Iterate through alpha pixels, 
# perform desired conversion 
pixels = mask.load() 
for x in range(0, width): 
    for y in range(0, height): 
     if pixels[x,y] < 255: 
      pixels[x,y] = 0 

# Paste image with converted alpha mask 
background = Image.new('RGBA', (825, 1125), (0, 0, 0, 255)) 
background.paste(img, (50, 50), mask) 
background.save('out.png') 

как примечание, альфа-канал фонового изображения довольно бесполезно. Если вам не нужно это позже, вы также можете загрузить фон:

background = Image.new('RGB', (825, 1125), (0, 0, 0)) 
+0

Ну вот идеальное решение, я был просто stuipid думать о создании моей собственной маски. большое спасибо –

 Смежные вопросы

  • Нет связанных вопросов^_^