Python 图片加水印【图片合成】

由于最开发了一个漫画搜的项目,其中有个盗链接口,和某(有钱的)大佬达成某种py协议(白嫖大佬的大盘鸡),图片有地方存啦~不怕源战大佬换规则和链接失效啦~

盗链接口介绍

xxx.xxx.xxx/Img?url=图片链接,返回图片数据并保存同步至国外的大盘鸡(准备加)
为了防止被盗用七七八八的,准备给返回的图片数据上面加个水印,其他七七八八的验证不方便透露
预览图全屏水印预览图

踩过的坑

刚开始看别人写的合成,定义空白背景,在空白背景上面加水印,然后将图片合成,200k的图片变到了1.4mb+,懵逼折腾半天,仔细看加全屏水印后的图片才100+k左右的大小,和原图合成就特么1.4mb+了,虽然我数学差也不止于此吧
后来发现空白背景的图片格式是png的原图是jpg的,合成不改图片模式死死的报错,要么改后缀要么改模式,透明背景定死了png,jpg改模式图片占用空间就变大…
(╯‵□′)╯︵┴─┴

不多bb直接附上代码了

from PIL import Image, ImageDraw, ImageFont
from io import BytesIO
import requests
def add_text_image(image, text):
myfont = ImageFont.truetype(r’字体路径’, 46)
draw = ImageDraw.Draw(image)
fillcolor = “#c4c4c4”
draw.text((img.size[0] – 46 * len(text), img.size[1] – 56), text, font=myfont, fill=fillcolor)
return image
if __name__ == ‘__main__’:
req = requests.get(url=’图片链接’)
img = Image.open(BytesIO(req.content))
im_after = add_text_image(img, u’漫画搜’)
# 可以直接 im_after.save(‘./out.png’) #保存
# 将图片保存到内存中
f = BytesIO()
im_after.save(f, ‘jpeg’)
# 从内存中取出bytes类型的图
data = f.getvalue()
with open(‘测试.jpg’, ‘wb’)as f:
f.write(data)

ps:模块包自己装哦!∠( ᐛ 」∠)_