1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > python给图片加半透明水印_图片添加半透明文字水印 Python

python给图片加半透明水印_图片添加半透明文字水印 Python

时间:2023-01-15 05:28:34

相关推荐

python给图片加半透明水印_图片添加半透明文字水印 Python

效果

python marker.py -f ./input/test.png -m '添加水印'

功能

使用知名python图片处理库PIL,为图片添加文字水印。

实现

步骤:根据文字生成水印图片;将水印图半透明并覆盖在原图上。

1. 将文字转换成水印图片

defgen_mark(args):#字体宽度

length = len(args.mark) *args.size#创建水印图片(宽度、高度)

mark = Image.new(mode='RGBA', size=(length, args.size))#生成文字

draw = ImageDraw.Draw(im=mark)

draw.text(xy=(0, 0),

text=args.mark, #水印文字

fill=args.color, #文字颜色 '#008B8B'

font=ImageFont.truetype(TTF_FONT, #文字字体

size=args.size)) #font_size 文字大小

deldraw#裁剪图片边缘空白区域

bg = Image.new(mode='RGBA', size=mark.size)

diff=ImageChops.difference(mark, bg)delbg

bbox=diff.getbbox()ifbbox:

mark=mark.crop(bbox)#设置水印透明度

set_opacity(mark, args.opacity)#得到水印文字大小

print(mark.size)

此处省略...

2. 将水印图片覆盖在原图上

defmark_im(im):'''在im图片上添加水印 im为打开的原图'''

#计算斜边长度

c = int(math.sqrt(im.size[0]*im.size[0] + im.size[1]*im.size[1]))#以斜边长度为宽高创建大图(旋转后大图才足以覆盖原图)

mark2 = Image.new(mode='RGBA', size=(c, c))#在大图上生成水印文字,此处mark为上面生成的水印图片

y, idx =0, 0while y

x = -int((mark.size[0] + args.space)*0.5*idx)

idx= (idx + 1) % 2

while x

mark2.paste(mark, (x, y))

x= x + mark.size[0] +args.space

y= y + mark.size[1] +args.space#将大图旋转一定角度

mark2 =mark2.rotate(args.angle)#在原图上添加大图水印

if im.mode != 'RGBA':

im= im.convert('RGBA')

im.paste(mark2,#大图

(int((im.size[0]-c)/2), int((im.size[1]-c)/2)), #坐标

mask=mark2.split()[3])delmark2return im

代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。