Python给文章加水印第二版

from PIL import Image,ImageDraw,ImageFont,ImageChops
import time
import os



sourceimg = "/home/hey/Desktop/sx_4.jpg"
fontpath = "/home/hey/Desktop/hey.ttf"
waterfontpath = "/home/hey/Desktop/WeiRuanYaHei-1.ttf"
savepath = "/home/hey/Desktop/img/"


#水印
def add_watermark(imgsavetarget):
    # 将原来的图片转换为RGBA模式
    imgwater = Image.open(imgsavetarget).convert('RGBA')
    # 新建一个图片,尺寸与上面的尺寸一样,透明度为0即完全透明
    txt = Image.new('RGBA', imgwater.size, (0, 0, 0, 0))
    # 设置要写文字的字体,注意有的字体不能打汉字,这里用的微软雅黑可以
    waterfont = ImageFont.truetype(waterfontpath, 60)
    # 打汉字
    d = ImageDraw.Draw(txt)
    # 写要打的位置,内容,用的字体,文字透明度
    ###左1
    d.text((txt.size[0] - 1200, txt.size[1] - 1600), "三", font=waterfont,
           fill=(153,153,153,153))
    d.text((txt.size[0] - 1150, txt.size[1] - 1650), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1100, txt.size[1] - 1700), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1050, txt.size[1] - 1750), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1000, txt.size[1] - 1800), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 950, txt.size[1] - 1850), "押", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 900, txt.size[1] - 1900), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 850, txt.size[1] - 1950), "贷", font=waterfont,
           fill=(153, 153, 153, 153))
    ###左2
    d.text((txt.size[0] - 1300, txt.size[1] - 1100), "三", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1250, txt.size[1] - 1150), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1200, txt.size[1] - 1200), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1150, txt.size[1] - 1250), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1100, txt.size[1] - 1300), "房", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1050, txt.size[1] - 1350), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1000, txt.size[1] - 1400), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 950, txt.size[1] - 1450), "贷", font=waterfont,
           fill=(153, 153, 153, 153))
    ###左3
    d.text((txt.size[0] - 1300, txt.size[1] - 650), "三", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1250, txt.size[1] - 700), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1200, txt.size[1] - 750), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1150, txt.size[1] - 800), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1100, txt.size[1] - 850), "房", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1050, txt.size[1] - 900), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 1000, txt.size[1] - 950), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 950, txt.size[1] - 1000), "贷", font=waterfont,
           fill=(153, 153, 153, 153))
    ###右1
    d.text((txt.size[0] - 750, txt.size[1] - 1500), "三", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 700, txt.size[1] - 1550), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 650, txt.size[1] - 1600), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 600, txt.size[1] - 1650), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 550, txt.size[1] - 1700), "房", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 500, txt.size[1] - 1750), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 450, txt.size[1] - 1800), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 400, txt.size[1] - 1850), "贷", font=waterfont,
           fill=(153, 153, 153, 153))

    ###右2
    d.text((txt.size[0] - 750, txt.size[1] - 950), "三", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 700, txt.size[1] - 1000), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 650, txt.size[1] - 1050), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 600, txt.size[1] - 1100), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 550, txt.size[1] - 1150), "房", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 500, txt.size[1] - 1200), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 450, txt.size[1] - 1250), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 400, txt.size[1] - 1300), "贷", font=waterfont,
           fill=(153, 153, 153, 153))

    ###右3
    d.text((txt.size[0] - 750, txt.size[1] - 450), "三", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 700, txt.size[1] - 500), "湘", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 650, txt.size[1] - 550), "银", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 600, txt.size[1] - 600), "行", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 550, txt.size[1] - 650), "房", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 500, txt.size[1] - 700), "抵", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 450, txt.size[1] - 750), "快", font=waterfont,
           fill=(153, 153, 153, 153))
    d.text((txt.size[0] - 400, txt.size[1] - 800), "贷", font=waterfont,
           fill=(153, 153, 153, 153))



    # 两个图片复合
    out = Image.alpha_composite(imgwater, txt)
    # 保存加水印后的图片
    out.save(imgsavetarget)




def image_to_text(targetimg,data):
    # 将img添加到画板
    imgdraw = ImageDraw.Draw(targetimg)
    # 设置需要绘制的字体 参数:字体名,字体大小
    imgfont = ImageFont.truetype(fontpath,size=22)
    # 字体颜色
    fillcolor = "black"
    # 获取img的宽和高
    # imgw,imgh = img.size
    # 开始将文字内容绘制到img的画板上 参数:坐标,绘制内容,填充颜色,字体
    imgdraw.text((440,295),data.get('name'),fill=fillcolor,font=imgfont)
    imgdraw.text((0,0), data.get('mobile'), fill=fillcolor, font=imgfont)
    # 设置img的保存路径和文件名
    imgsavetarget = savepath + time.strftime("%Y%m%d%H%M%S") + ".png"
    # 开始保存
    targetimg.save(imgsavetarget, "png")

    # 返回保存结果
    return imgsavetarget



def save_image(data):
    # 初始化一个img对象 为None
    targetimg = None
    # 判断需要打开的img对象路径是否存在
    if os.path.exists(sourceimg):
        targetimg = Image.open(sourceimg)
        result = image_to_text(targetimg,data)
        # 加水印
        add_watermark(result)
        return result
    else:
        print("Image is Not Found!")
        return "Image is Not Found!"


if __name__:
    data = {"name":"陈独秀","mobile":"18993065156"}
    result = save_image(data)
    print(result)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值