Найти - Пользователи
Полная версия: Полупрозрачность нового слоя в PIL
Начало » Python для экспертов » Полупрозрачность нового слоя в PIL
1
pyOut
Приветсвтую,

Нужно наложить на изображение новый слой белого изображения и сделать новый слой полупрозрачным. Как такое можно сделать?
Делаю следующим образом, но никакого эффекта оно мне не дает:
def _blink(image):
blink = Image.new('RGBA', (image.size[0], image.size[1]))

blink.paste((255, 255, 255, 180), (0, 0, image.size[0], image.size[1]), image)

blink.paste(image, (0, 0, image.size[0], image.size[1]), image)
return blink
igor.kaist
Все просто:
img=Image.open('test.jpg')
r,g,b=img.split()
a=Image.new('L',img.size,0xcc)
out=Image.merge('RGBA',(r,g,b,a))
out.save('test.png')
pyOut
igor.kaist, что-то у меня не так работает как хотелось бы. Может быть я просто не правильно выразился.
Есть код:
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
Цвет фона у меня белый поэтому я хочу чтобу чтобы верхняя половина изображения получила эффект полупрозрачности. Т.е. мне нужно наложить на верхнюю половину изображения белый слой и сделать ему прозразчность 0.5. А при текущем коде она этого не делает.
igor.kaist
pyOut
Т.е. мне нужно наложить на верхнюю половину изображения белый слой и сделать ему прозразчность 0.5
у alpha канала нет цвета….
если вам точно известно, какую часть изображения нужно сделать прозрачной (верхняя половина), то просто закрасьте нужный прямоугольник blink с помощью ImageDraw
P.S. если я вас не правильно понял, приведите пример картинки как это должно выглядеть. До и после.
pyOut
igor.kaist, не понял. Можешь привести примерчик?
igor.kaist
pyOut
Можешь привести примерчик?
Наоборот, приведи примерчик того что тебе нужно :) покажи картинки “до” и “после”, а я тебе напишу как это сделать…
pyOut
igor.kaist, ok :)

Примерно нужно сделать следующее:

Исходное изображение:
http://img194.imageshack.us/i/beforef.png/
Результирующее изображение:
http://img638.imageshack.us/i/afterc.png/
igor.kaist
Все, понял :)
import Image
img=Image.open('test.jpg')

# создаем белый слой, высотой в половину оригинала
white_layer=Image.new('RGB',(img.size[0],img.size[1]/2),'white')
# создаем маску прозрачности, тоже высотой в половину оригинала
mask=Image.new('L',(img.size[0],img.size[1]/2),0x7f)
# вставляем белый слой, используя маску прозрачности
img.paste(white_layer,(0,0),mask=mask)
# profit....
img.save('test.png')
Результат:


P.S. Для работы с PIL всегда держу под рукой PIL Handbook.pdf
pyOut
igor.kaist, спасибо то что нужно и отдельное спасибо за хендбук. Скажи пожалуйста, а если изображение является прозрачным т.е. без фона код сильно измениться чтобы добавить полупрозрачность на изображение без фона?
igor.kaist
pyOut
код сильно измениться чтобы добавить полупрозрачность на изображение без фона?
Ну смотри пост #2, там код как раз это делает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB