ako*_*o25 1 python image-processing python-imaging-library python-3.x
我正在尝试创建一个图像并用半透明的黑色填充它:
from PIL import Image
from PIL import ImageFont
from PIL import ImageDraw
from PIL import ImageEnhance
fnt = create_font()
# my background rectangle
img1 = Image.new("RGBA", 100, 100, color=(0, 0, 0, 230)) #RGBA
dr1 = ImageDraw.Draw(img1)
dr1.text((5, 5), "some text", font=fnt)
# my source image
my_img.paste(dr1, (10, 10))
my_img.save(out_file, "JPEG")
Run Code Online (Sandbox Code Playgroud)
但它忽略了透明度级别“230”。如果我将其更改为“0”或任何其他数字,“dr1”矩形的透明度级别保持不变 - 它是全黑的。
更新:
我有 jpeg 来源my_img。我想在其带有文本的部分放置一个半透明矩形img1。我怎样才能做到这一点?我怎样才能变得img1更加透明?
首先,JPEG 不支持透明度,因此如果您想要具有透明度的图像文件,则需要使用不同的格式,例如 PNG。
\n\n我不知道该create_font函数是在哪里定义的;我的 PIL ImageFont 中没有该名称的函数(我在 32 位 Linux 上的 Python 3.6 上使用 PIL.PILLOW_VERSION == \'3.3.0\')。
另外,该粘贴操作将不起作用,但您不需要它。
\n\n这是您的代码的修改版本。
\n\nfrom PIL import Image, ImageFont, ImageDraw\n\nimg1 = Image.new("RGBA", (100, 100), color=(0, 0, 0, 64))\ndr1 = ImageDraw.Draw(img1)\nfnt = ImageFont.load_default()\ndr1.text((5, 5), "some text", font=fnt, fill=(255, 255, 0, 128))\n\n#img1.show()\nimg1.save(\'test.png\')\nRun Code Online (Sandbox Code Playgroud)\n\n这是它创建的 PNG 文件:
\n\n
这是您更新的问题的一些代码。
\n\nfrom PIL import Image, ImageFont, ImageDraw\n\nimg1 = Image.open(\'hueblock.jpg\').convert("RGBA")\n\noverlay = Image.new("RGBA", (100, 100), color=(0, 0, 0, 63))\ndr1 = ImageDraw.Draw(overlay)\nfnt = ImageFont.load_default()\ndr1.text((5, 5), "some text", font=fnt, fill=(255, 255, 255, 160))\n\nimg1.paste(overlay, (64, 64), overlay)\nimg1.show()\nimg1.save(\'test.jpg\')\nRun Code Online (Sandbox Code Playgroud)\n\n这是hueblock.jpg和test.jpg
\n\n\n\n请注意粘贴调用的参数:
\n\nimg1.paste(overlay, (64, 64), overlay)\nRun Code Online (Sandbox Code Playgroud)\n\n最后一个参数是图像掩码。通过提供 RGBA 图像作为掩码 arg,其 alpha 通道被用作掩码,如Pillow 文档中所述
\n\n\n\n[...] 如果给出了掩码,则此方法仅更新掩码指示的区域。您可以使用 \xe2\x80\x9c1\xe2\x80\x9d、\xe2\x80\x9cL\xe2\x80\x9d 或 \xe2\x80\x9cRGBA\xe2\x80\x9d 图像\n(在后一种情况下) ,alpha 带用作掩模)。如果掩码为 255,则按原样复制给定图像。如果掩码为 0,则保留当前值。中间值会将两个图像混合在一起,包括它们的 Alpha 通道(如果有)。
\n
| 归档时间: |
|
| 查看次数: |
1707 次 |
| 最近记录: |