PIL绘制半透明框

这篇博客介绍了如何在Python的PIL库中实现半透明框的绘制。由于PIL本身不直接支持该功能,作者通过创建一个新的透明图层,绘制半透明矩形,然后使用`alpha_composite`函数将它与原图融合,最终达到绘制半透明框的效果。示例代码展示了如何创建并显示带有两个不同位置和大小的黄色半透明框的蓝色背景图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PIL绘制半透明框

由于PIL的ImageDraw本身就算的RGBA的图片也不支持绘制半透明框的功能,就算是半透明的绘制,显示的效果也是全不透的,因此,我们只能借助alpha_composite函数

  1. 先在空白的图片上画半透明框
  2. 将空白的图片与给定图片融合,得到新图片,新图片就是我们想要的结果

创建一个目标图片

bg_img = Image.new("RGBA", (256, 256), (0, 0, 255, 255))
image-20211113101306559#pic_center

绘制半透明框的函数

def drawRect(img, pos, **kwargs):
    transp = Image.new('RGBA', img.size, (0,0,0,0))
    draw = ImageDraw.Draw(transp, "RGBA")
    draw.rectangle(pos, **kwargs)
    img.paste(Image.alpha_composite(img, transp))

使用函数绘制两个框

drawRect(bg_img, (0,0,100,100), fill=(255,255,0,100))
drawRect(bg_img, (50,50,150,150), fill=(255,255,0,100))
bg_img.show()

完整代码

from PIL import Image, ImageDraw
bg_img = Image.new("RGBA", (256, 256), (0, 0, 255, 255))
def drawRect(img, pos, **kwargs):
    transp = Image.new('RGBA', img.size, (0,0,0,0))
    draw = ImageDraw.Draw(transp, "RGBA")
    draw.rectangle(pos, **kwargs)
    img.paste(Image.alpha_composite(img, transp))

drawRect(bg_img, (0,0,100,100), fill=(255,255,0,100))
drawRect(bg_img, (50,50,150,150), fill=(255,255,0,100))
bg_img.show()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值