【发布时间】:2012-08-28 10:17:57
【问题描述】:
好的,情况如下:
我想使用 Python 图像库为这样的图像“主题化”:
主题颜色:"#33B5E5"
输入: 输出:
我通过 ImageMagick 使用这个命令得到了结果:
convert image.png -colorspace gray image.png
mogrify -fill "#33b5e5" -tint 100 image.png
解释:
图片先转为黑白,再进行主题化。
我想通过 Python 图像库获得相同的结果。 但似乎我在使用它时遇到了一些问题:
- 无法处理透明度
- 背景(主图像中的透明度)也获得了主题..
我正在尝试使用这个脚本:
import Image
import ImageEnhance
def image_overlay(src, color="#FFFFFF", alpha=0.5):
overlay = Image.new(src.mode, src.size, color)
bw_src = ImageEnhance.Color(src).enhance(0.0)
return Image.blend(bw_src, overlay, alpha)
img = Image.open("image.png")
image_overlay(img, "#33b5e5", 0.5)
您可以看到我没有先将其转换为灰度,因为这也不适用于透明度。
很抱歉在一个问题中发布了这么多问题,但我无能为力:$
希望大家理解。
【问题讨论】:
-
尝试使用
Image.composite()而不是Image.blend()。 -
composite(image1, image2, mask),用什么做遮罩??
-
您能否展示一个您希望从输入获得的输出的具体示例(仅一个或多个像素的输入和输出,包括 alpha,而不是图形)?我想我理解透明度问题,但不理解从一种颜色到另一种颜色的“主题图像”的意思。
-
当然,我可以用 ImageMagick 做到这一点: IN: mupload.nl/img/olpiyj9is.png OUT: mupload.nl/img/fiaoq6gk5.png
-
抱歉,虽然总体上有助于显示您想要发生的事情,但这两张图片(以及您问题中的两张)不足以准确确定它们之间的像素级别发生了什么- 需要对其进行描述,以确定 PIL 是否可以实现等效功能。也许如果您更新了您的问题并提供了有关您在 ImageMagick 中所做的详细信息...
标签: python image transparency python-imaging-library colorize