【发布时间】:2015-11-10 16:41:24
【问题描述】:
我正在使用 Pillow 从图像中剪出一个形状。为此,我使用了一个 alpha 蒙版,其中包含我需要的形状的黑白图像。当我使用 Pillow 应用蒙版时,我会留下一个图像的剪裁,就像我想要的那样,但它是由来自不同文件夹的完全不相关的图片勾勒出来的。
当我将它与来自互联网 (this one to be exact) 的随机图片结合起来时,我得到以下结果:
图像周围的白色边框与工作文件夹位于不同的文件夹中,并且从未被我的代码引用。
我不知道 Pillow 是如何获得白色边框的。这真的很令人沮丧。有人知道为什么会这样吗?
作为参考,代码如下:
from PIL import Image
def Blend_Pic():
background = Image.open("bg.png")
mask = Image.open("mask2.png").convert("L")
foreground = Image.open("fg.png")
background.paste(foreground, (0, 0), mask)
background.show()
if __name__ == "__main__":
Blend_Pic()
背景只是一个空的 1600x900 png,前景是谷歌的随机图像。
编辑:将蒙版更改为简单的矩形会产生相同的结果,因此更改蒙版没有帮助。
【问题讨论】:
-
答案很明显:你认为你正在运行的代码,你在这里展示的,不是你实际运行的代码。要么,要么
fg.png已经包含上一步的边框。 -
我运行的代码肯定是对的,前景图片绝对是没有边框的。我已经多次更改工作目录以确保我运行的是正确的代码,并且我从谷歌重新下载了前台,仍然是同样的问题。
-
将完整路径名放入
open调用中,以确保您获得正确的文件。并在打开图片后在图片上加上show以确保三重确定。 -
当我用枕头显示背景图像时,它显示了我讨厌的神秘边框。但是,实际图像本身在 Gimp 和 Windows 照片查看器中显示为完全空白。我使用绝对地址来确保它是同一个。
-
我使用边框作为基本图像(尺寸合适,我很懒),即使我从图像中删除它,它仍然显示出来。所以,我生成了一个新的空白背景并且它工作了。
标签: python image mask alpha pillow