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)
Python给文章加水印第二版
最新推荐文章于 2025-06-10 17:56:05 发布