使用 Python 成像库在图像顶部叠加彩色像素

Overlaying coloured pixels on top of an image using Python Imaging Library

好的,首先。这是 this question.

的几乎重复

但是,我面临的问题在关键方面略有不同。

在我的应用程序中,我读取了一个通用文件名,加载了该图像并显示了它。棘手的地方是我覆盖了 'highlighted' 的外观。为此,我使用了 Image.blend() 函数,并将其与纯黄色图像混合。

但是,在处理混合时,我遇到了两个图像不兼容无法混合的错误。为了解决这个问题,我打开了我在 Paint 中的示例图像,然后在整个图像上粘贴了黄色,并将其保存为副本。

我刚想到,当按文件名读入不同类型的图像时,这会失败。请记住,这需要是通用的。

所以我的问题是:我可以 python 通过复制图像并修改它使其为纯黄色来生成图像,而不是手动复制图像吗?注意:之后我不需要保存它,所以让它发生就足够了。

不幸的是,我不能分享我的代码,但希望以下内容能让我了解我需要什么:

from PIL import Image 

desiredWidth = 800
desiredHeight = 600

primaryImage = Image.open("first.jpg").resize((desiredWidth, desiredHeight), Image.ANTIALIAS)

# This is the thing I need fixed:
highlightImage = Image.open("highlight.jpg").resize((desiredWidth, desiredHeight), Image.ANTIALIAS)

toDisplay = Image.blend(primaryImage, highlightImage, 0.3)

感谢任何能提供帮助的人。

听起来您想制作一张 new 图片:

fill_color = (255,255,0) #define the colour as (R,G,B) tuple

highlightImage = Image.new(primaryImage.mode, #same mode as the primary
                           primaryImage.size, #same size as the primary
                           fill_color)#and the colour defined above

这将创建一个 new 图像,其模式和大小与已打开的图像相同,但具有纯色。干杯。

此外,如果您使用的是 Pillow 而不是原始 PIL,您甚至可以通过名称获取颜色:

from PIL.ImageColor import getcolor

overlay = 'yellow'
fill_color = getcolor(overlay, primaryImage.mode)