Python:使用粘贴重叠像素和alpha通道= 0的区域组合图像

时间:2013-08-20 20:19:57

标签: python image python-imaging-library paste

我正在尝试将三个图像组合在一起。我想在底部的图像是700x900图像与所有黑色像素。最重要的是,我想粘贴一个400x400的图像,偏移量为100,200。最重要的是,我想粘贴一个700x900的图像边框。图像边框内部有alpha = 0,而alpha = 0,因为它没有直边。当我运行下面粘贴的代码时遇到2个问题:

1)在alpha通道= 0的边框图像上的任何地方,alpha通道都设置为255,而白色显示的是黑色背景,而是我放置边框的图像。

2)边框图像的质量已经大大降低,看起来与它应该有很大不同。

另外:边框图像的一部分将覆盖我放置边框的图像的一部分。所以我不能只是改变我粘贴的顺序。

提前感谢您的帮助。

#!/usr/bin/python -tt

from PIL import ImageTk, Image

old_im2 = Image.open('backgroundImage1.jpg') # size = 400x400
old_im = Image.open('topImage.png') # size = 700x900
new_size = (700,900)
new_im = Image.new("RGBA", new_size) # makes the black image
new_im.paste(old_im2, (100, 200))
new_im.paste(old_im,(0,0))

new_im.show()
new_im.save('final.jpg')

1 个答案:

答案 0 :(得分:1)

我认为你对图像存在误解 - 边框图像到处都有像素。它不可能是“缺失”的像素。可以使用带有Alpha通道的图像,该通道类似于RGB通道,但表示透明度。

试试这个:

1。确保topImage.png具有透明度通道,并且您希望“缺失”的像素是透明的(即具有最大alpha值)。你可以用这种方式仔细检查:

print old_im.mode  # This should print "RGBA" if it has an alpha channel.

2。在“RGBA”模式下创建new_im

new_im = Image.new("RGBA", new_size) # makes the black image
# Note the "A" --------^

3。请尝试使用此粘贴语句:

new_im.paste(old_im,(0,0), mask=old_im)  # Using old_im as the mask argument should tell the paste function to use old_im's alpha channel to combine the two images.