У меня есть фрагмент кода, который берет строку и создает граффити-подобное изображение из этой строки.Все буквы представляют собой отдельные изображения .PNG, которые считываются и вставляются в новое, более длинное изображение.Моя проблема в том, что хотя фоновый альфа-канал фактически сохраняется, там, где буквы перекрываются, это не так.Пожалуйста, смотрите изображение.
Как вставить эти буквы, перекрывая друг друга, сохранив альфа-канал?Похоже, что для работы функций alpha_composite и blend нужны одинаковые изображения.
Следует отметить, что я могу делать это либо на Python, либо на C ++, я только что использовал python, потому что он казался очень быстрым и простым.
ИЗОБРАЖЕНИЕ проблемы
Одно оригинальное письмо
РЕДАКТИРОВАТЬ: Вот код.Наверняка должны быть лучшие способы сделать это.
import sys
from PIL import Image
def openLetters(letters):
files = {
'A': 'A-rens.png',
'B': 'B-rens.png',
'C': 'C-rens.png',
'D': 'D-rens.png',
'E': 'E-rens.png',
'F': 'F-rens.png',
'G': 'G-rens.png',
'H': 'H-rens.png',
'I': 'I-rens.png',
'J': 'J-rens.png',
'K': 'K-rens.png',
'L': 'L-rens.png',
'M': 'M-rens.png',
'N': 'N-rens.png',
'O': 'O-rens.png',
'P': 'P-rens.png',
'Q': 'Q-rens.png',
'R': 'R-rens.png',
'S': 'S-rens.png',
'T': 'T-rens.png',
'U': 'U-rens.png',
'V': 'V-rens.png',
'W': 'W-rens.png',
'X': 'X-rens.png',
'Y': 'Y-rens.png',
'Z': 'Z-rens.png',
}
images = []
for letter in letters:
images.append(Image.open(files[letter]))
print "Opened:" + files[letter]
widths, heights = zip(*(i.size for i in images))
totalWidth = sum(widths)
maxHeight = max(heights)
newImage = Image.new('RGBA', (totalWidth, maxHeight))
x_offset = 0
for im in images:
newImage.paste(im, (x_offset, 0), mask=0)
x_offset += im.size[0] - 200
newImage.save(letters + ".png")
openLetters("ANDERS")