-
Приветсвую,
Хочу реализовать следующий эффект. Сделать верхнюю половину изображения полупрозрачной. Я знаю что фон изображения белый, хочу получить такой эффект наложив на верхнюю половину исходного изображения белый слой с полупрозрачностью. Если конечно есть более универсальный метод буду рад узреть его. Пытаюсь наложить на все изображение полупрозрачность следующим кодом
Но результат не тот который я ожидаю увидеть. Помогите правильным кодом.def _blink(image):
# Мое изображение RGBA, при не указании параметра a выдает ошибку
r, g, b, a = image.split()
blink = Image.new('L', (image.size[0], image.size[1]), 0xcc)
image = Image.merge('RGBA',(r, g, b, blink))
return image -
Я не очень представляю, как вашим способом сделать: если разодрать исходное изображение на части и в нём поменять прозрачность, оно не получит белый свет на себе никак, а просто станет прозрачным. Я бы так сделал:
def highlight(image): # белый свет -- тупой белый прямоугольник light = Image.new('RGB', size=image.size, color=0xFFFFFF) # маска, изначально непрозрачная (белая) mask = Image.new('L', size=image.size, color=0xFF) # верхнюю половину маски делаем серой (полупрозрачной) draw = ImageDraw.Draw(mask) draw.rectangle((0, 0, image.size[0], image.size[1] / 2), fill=0x80) # сливаем белый свет на исходную картинку через маску return Image.composite(image, light, mask)А ещё лучше маску не рисовать внутри функции, а заготовить заранее: какой-нибудь градиент нарисовать. Правило простое: белое — непрозрачно, чёрное — прозрачно.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.
