Ant*_*ard 7 python python-imaging-library pillow
我正在尝试从JPEG照片(1600x900)和带有Alpha通道(400x62)的PNG徽标制作合成图像.
这是一个使用image magick完成工作的命令:
composite -geometry +25+25 watermark.png original_photo.jpg watermarked_photo.jpg
Run Code Online (Sandbox Code Playgroud)
现在我想在python脚本中做类似的事情,而不用PIL在外部调用这个shell命令.
这是我尝试过的:
photo = Image.open('original_photo.jpg')
watermark = Image.open('watermark.png')
photo.paste(watermark, (25, 25))
Run Code Online (Sandbox Code Playgroud)
这里的问题是完全忽略了alpha通道,结果好像我的水印是黑白而不是rbga(0, 0, 0, 0)和rbga(255, 255, 255, 128).
事实上,PIL文档指出:"如果你想将图像与他们的alpha通道相结合,请参阅alpha_composite()."
所以我看了看alpha_composite().不幸的是,这个功能要求两个图像具有相同的大小和模式.
Ant*_*ard 18
最后,我Image.paste()仔细阅读并发现了这一点:
如果给出了掩码,则此方法仅更新掩码指示的区域.您可以使用"1","L" 或"RGBA"图像(在后一种情况下,alpha波段用作蒙版).掩码为255时,给定图像按原样复制.掩码为0时,保留当前值.中间值将两个图像混合在一起,包括它们的alpha通道.
所以我尝试了以下方法:
photo = Image.open('original_photo.jpg')
watermark = Image.open('watermark.png')
photo.paste(watermark, (25, 25), watermark)
Run Code Online (Sandbox Code Playgroud)
而且......它奏效了!
| 归档时间: |
|
| 查看次数: |
5395 次 |
| 最近记录: |