python - 枕头 - 使用粘贴在不透明图像上的透明度
问题描述
让我先声明一下,我对成像/图形一无所知,所以也许我对这里的某些东西缺乏基本的了解。
我正在尝试将图像 ( game_image
) 粘贴到我的基本图像 ( image
) 上,并在顶部使用透明覆盖 ( overlay_image
) 为文本添加一些变暗。
这是预期结果的示例:
这是我当前代码生成的示例:
这是我当前的代码:
from PIL import Image, ImageFont, ImageDraw
# base image sizing specific to Twitter recommended
base_image_size = (1600, 900)
base_image_mode = "RGBA"
base_image_background_color = (0, 52, 66)
image = Image.new(base_image_mode, base_image_size, base_image_background_color)
# game_image is the box art image on the left side of the card
game_image = Image.open("hunt.jpg")
image.paste(game_image)
# overlay_image is the darkened overlay over the left side of the card
overlay_image = Image.new(base_image_mode, base_image_size, (0, 0, 0))
overlay_image.putalpha(128)
# x position should be negative 50% of base canvas size
image.paste(overlay_image, (-800, 0), overlay_image)
image.save("test_image.png", format="PNG")
您可以看到游戏图像从叠加层继承了透明度。我怀疑这与mask
我上面粘贴中添加的内容有关,但我尝试研究什么是遮罩,在我发现它的任何上下文中它都超出了我的理解。
感谢您对理解为什么会发生这种情况和/或我如何解决问题的任何帮助!
解决方案
你非常接近......你所需要的只是使用Image.alpha_composite
而不是paste
. 因此,代码的最后两行应该是:
image = Image.alpha_composite(image, overlay_image)
image.save("test_image.png", format="PNG")
推荐阅读
- sql - 两次加入同一张表并选择一对
- php - 上传前如何调整图片大小
- linux - 获取find命令返回的结果后如何在while循环中复制文件?
- php - 在json中删除换行符作为字符串
- javascript - 如何比较来自不同元素的 2 个值并仅对具有匹配值的元素采取措施?
- git - 暂存的 git lfs 文件未被 git-lfs 拦截
- python - return statement not passing value
- vue.js - Using lang="pug" with Quasar CLI
- angular - Angular HttpClient 拦截器:刷新身份验证令牌
- css - legends do not stay in place when resizing linked graphs in dygraphs