import time import os import asyncio from concurrent import futures try: from PIL import Image, ImageDraw, ImageFont, ImageEnhance except ImportError: import Image, ImageDraw, ImageFont, ImageEnhance fontpath = "/home/hey/Desktop/WeiRuanYaHei-1.ttf" waterfontpath = "/home/hey/Desktop/WeiRuanYaHei-1.ttf" sourceimg1 = "/home/hey/Desktop/sx_1.jpg" sourceimg2 = "/home/hey/Desktop/sx_2.jpg" sourceimg3 = "/home/hey/Desktop/sx_3.jpg" sourceimg4 = "/home/hey/Desktop/sx_4.jpg" sourceimg5 = "/home/hey/Desktop/sx_5.jpg" out_file = "/home/hey/Desktop/img/" #给图片画文字水印,angel为角度,opacity为透明度 ###第一页 async def text_watermark(img, text, out_file, angle=23, opacity=0.50): starttime =time.time() ''''' 添加一个文字水印,做成透明水印的模样,应该是png图层合并 http://www.pythoncentral.io/watermark-images-python-2x/ 这里会产生著名的 ImportError("The _imagingft C module is not installed") 错误 Pillow通过安装来解决 pip install Pillow ''' watermark = Image.new('RGBA', img.size, (0, 0, 0,0)) # 我这里有一层白色的膜,去掉(255,255,255) 这个参数就好了 FONT = waterfontpath size = 250 n_font = ImageFont.truetype(FONT, size) # 得到字体 n_width, n_height = n_font.getsize(text) n_font = ImageFont.truetype(FONT, size=size) # watermark = watermark.resize((text_width,text_height), Image.ANTIALIAS) draw = ImageDraw.Draw(watermark, 'RGBA') # 在水印层加画笔 ###左3 draw.text((watermark.size[0] - 2650, watermark.size[1] - 4350),text, font=n_font, fill="#ccc") draw.text((watermark.size[0] - 3150, watermark.size[1] - 3150), text, font=n_font, fill="#ccc") draw.text((watermark.size[0] - 3650, watermark.size[1] - 1950), text, font=n_font, fill="#ccc") ###右3 draw.text((watermark.size[0] - 2000, watermark.size[1] - 3800), text, font=n_font, fill="#ccc") draw.text((watermark.size[0] - 2550, watermark.size[1] - 2550), text, font=n_font, fill="#ccc") draw.text((watermark.size[0] - 3100, watermark.size[1] - 1300), text, font=n_font, fill="#ccc") watermark = watermark.rotate(angle, Image.BICUBIC) alpha = watermark.split()[3] alpha = ImageEnhance.Brightness(alpha).enhance(opacity) watermark.putalpha(alpha) out_file = out_file + time.strftime("%Y%m%d%H%M%S") + ".jpg" Image.composite(watermark, img, watermark).save(out_file, 'JPEG') endtime = time.time() print("水印方法执行时间:",endtime-starttime) print("文字水印成功") return out_file async def image_to_text_one(data): im = Image.open(sourceimg1) # image 对象 out_file_path = await text_watermark(im, '三湘银行抵押快贷', out_file) targetimg = Image.open(out_file_path) # 将img添加到画板 imgdraw = ImageDraw.Draw(targetimg) # 设置需要绘制的字体 参数:字体名,字体大小 imgfont = ImageFont.truetype(fontpath, size=48) # 字体颜色 fillcolor = "black" # 获取img的宽和高 # imgw,imgh = img.size # 开始将文字内容绘制到img的画板上 参数:坐标,绘制内容,填充颜色,字体 imgdraw.text((1030, 685),data.get("name"), fill=fillcolor, font=imgfont) imgdraw.text((1650, 685), "18993065156", fill=fillcolor, font=imgfont) imgdraw.text((2500, 685), "620123199509122171", fill=fillcolor, font=imgfont) imgdraw.text((980, 785), "风险衍生接口", fill=fillcolor, font=imgfont) imgdraw.text((1750, 785), "男", fill=fillcolor, font=imgfont) imgdraw.text((2500, 785), "23", fill=fillcolor, font=imgfont) imgdraw.text((3030, 785), "未婚", fill=fillcolor, font=imgfont) imgdraw.text((1050, 885), "大专", fill=fillcolor, font=imgfont) imgdraw.text((1650, 885), "甘肃省兰州市七里河区杨家桥兰电小区", fill=fillcolor, font=imgfont) imgdraw.text((1010, 985), "正在居住", fill=fillcolor, font=imgfont) imgdraw.text((1750, 985), "2年", fill=fillcolor, font=imgfont) imgdraw.text((2450, 985), "23年", fill=fillcolor, font=imgfont) imgdraw.text((3030, 985), "程序员", fill=fillcolor, font=imgfont) imgdraw.text((1030, 1085), "甘肃爱彼利科技有限公司", fill=fillcolor, font=imgfont) imgdraw.text((2450, 1085), "1年", fill=fillcolor, font=imgfont) imgdraw.text((3030, 1085), "1年", fill=fillcolor, font=imgfont) imgdraw.text((1020, 1185), "后端开发", fill=fillcolor, font=imgfont) imgdraw.text((1750, 1185), "甘肃省兰州市城关区静宁路昌运大厦", fill=fillcolor, font=imgfont) imgdraw.text((1050, 1325), "无", fill=fillcolor, font=imgfont) imgdraw.text((1750, 1325), "无", fill=fillcolor, font=imgfont) imgdraw.text((3030, 1325), "否", fill=fillcolor, font=imgfont) imgdraw.text((1030, 1525), "什么工商信息,我特么不知道", fill=fillcolor, font=imgfont) imgdraw.text((1050, 1670), "无", fill=fillcolor, font=imgfont) imgdraw.text((1750, 1670), "无", fill=fillcolor, font=imgfont) imgdraw.text((2450, 1670), "0", fill=fillcolor, font=imgfont) imgdraw.text((1050, 1800), "描述什么我特么也不知道", fill=fillcolor, font=imgfont) imgdraw.text((1030, 1970), "张思瑶", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1970), "1666666688", fill=fillcolor, font=imgfont) imgdraw.text((2500, 1970), "6xxxxxxxxxxxxxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((1030, 2070), "室内设计", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2070), "兰州市九创装饰有限公司", fill=fillcolor, font=imgfont) imgdraw.text((3030, 2070), "设计师", fill=fillcolor, font=imgfont) imgdraw.text((1030, 2170), "5xxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2170), "甘肃省兰州市安宁区", fill=fillcolor, font=imgfont) imgdraw.text((1030, 2310), "无", fill=fillcolor, font=imgfont) imgdraw.text((1750, 2310), "无", fill=fillcolor, font=imgfont) imgdraw.text((3030, 2310), "无", fill=fillcolor, font=imgfont) imgdraw.text((1030, 2500), "0", fill=fillcolor, font=imgfont) imgdraw.text((1750, 2500), "我不知道我特么描述什么", fill=fillcolor, font=imgfont) imgdraw.text((930, 2800), "201801", fill=fillcolor, font=imgfont) imgdraw.text((1250, 2800), "李彦锟", fill=fillcolor, font=imgfont) imgdraw.text((1510, 2800), "城关区国芳百货1栋16楼", fill=fillcolor, font=imgfont) imgdraw.text((2200, 2800), "120m²", fill=fillcolor, font=imgfont) imgdraw.text((2450, 2800), "500万", fill=fillcolor, font=imgfont) imgdraw.text((2730, 2800), "500万", fill=fillcolor, font=imgfont) imgdraw.text((3000, 2800), "600万", fill=fillcolor, font=imgfont) imgdraw.text((900, 3770), "甘A88888", fill=fillcolor, font=imgfont) imgdraw.text((1250, 3770), "李彦锟", fill=fillcolor, font=imgfont) imgdraw.text((1510, 3770), "雪佛兰科迈罗2017RS2.0T", fill=fillcolor, font=imgfont) imgdraw.text((2200, 3770), "2018.9", fill=fillcolor, font=imgfont) imgdraw.text((2450, 3770), "38万", fill=fillcolor, font=imgfont) imgdraw.text((2730, 3770), "500万", fill=fillcolor, font=imgfont) imgdraw.text((3000, 3770), "38万", fill=fillcolor, font=imgfont) imgdraw.text((960, 4370), "260万", fill=fillcolor, font=imgfont) imgdraw.text((1360, 4370), "20万", fill=fillcolor, font=imgfont) imgdraw.text((1760, 4370), "5万", fill=fillcolor, font=imgfont) imgdraw.text((2160, 4370), "2万", fill=fillcolor, font=imgfont) imgdraw.text((2560, 4370), "0", fill=fillcolor, font=imgfont) imgdraw.text((2960, 4370), "0", fill=fillcolor, font=imgfont) imgdraw.text((1300, 4470), "4间商铺", fill=fillcolor, font=imgfont) imgdraw.text((2160, 4470), "400万", fill=fillcolor, font=imgfont) imgdraw.text((1300, 4570), "2000万", fill=fillcolor, font=imgfont) imgdraw.text((2160, 4570), "2000万", fill=fillcolor, font=imgfont) # # 设置img的保存路径和文件名 # imgsavetarget = savepath + time.strftime("%Y%m%d%H%M%S") + ".png" # 开始保存 targetimg.save(out_file_path, "png") # 返回保存结果 return out_file_path ###第二页 async def image_to_text_two(data): im = Image.open(sourceimg2) # image 对象 out_file_path = await text_watermark(im, '三湘银行抵押快贷', out_file) targetimg = Image.open(out_file_path) imgdraw = ImageDraw.Draw(targetimg) imgfont = ImageFont.truetype(fontpath, size=48) fillcolor = "black" imgdraw.text((1650, 595), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 595), "不知道什么材料", fill=fillcolor, font=imgfont) imgdraw.text((1650, 695), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 795), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 895), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 795), "不知道什么材料1", fill=fillcolor, font=imgfont) imgdraw.text((1650, 995), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1095), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1045), "不知道什么材料2", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1195), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1195), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1295), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1295), "不知道什么材料3", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1395), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1495), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1595), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1495), "不知道什么材料4", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1695), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1795), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1745), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 1895), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 1895), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1550, 1995), "互联网金融软件开发", fill=fillcolor, font=imgfont) imgdraw.text((2900, 1995), "是", fill=fillcolor, font=imgfont) imgdraw.text((1400, 2095), "80%", fill=fillcolor, font=imgfont) imgdraw.text((2030, 2095), "200", fill=fillcolor, font=imgfont) imgdraw.text((2900, 2095), "租赁", fill=fillcolor, font=imgfont) imgdraw.text((1700, 2250), "盈利模式是什么我特么怎么知道", fill=fillcolor, font=imgfont) imgdraw.text((1700, 2430), "市场很大,前景很好", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2560), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2660), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2760), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2860), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2960), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2550, 2760), "不知道什么材料5", fill=fillcolor, font=imgfont) imgdraw.text((1150, 3160), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((2000, 3160), "100%", fill=fillcolor, font=imgfont) imgdraw.text((2700, 3160), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((1150, 3360), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((2000, 3360), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((2700, 3360), "10000000", fill=fillcolor, font=imgfont) targetimg.save(out_file_path, "png") return out_file_path async def image_to_text_three(data): im = Image.open(sourceimg3) # image 对象 out_file_path = await text_watermark(im, '三湘银行抵押快贷', out_file) targetimg = Image.open(out_file_path) imgdraw = ImageDraw.Draw(targetimg) imgfont = ImageFont.truetype(fontpath, size=48) imgfont_one = ImageFont.truetype(fontpath, size=38) fillcolor = "black" imgdraw.text((1230, 585), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2150, 585), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2950, 585), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1230, 685), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2150, 685), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2950, 685), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 785), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2650, 785), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 940), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2650, 940), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 1140), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2650, 1140), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 1340), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2650, 1340), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 1540), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2650, 1540), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1430, 1710), "不知道什么原因", fill=fillcolor, font=imgfont) imgdraw.text((1240, 1860), "0", fill=fillcolor, font=imgfont) imgdraw.text((2000, 1860), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((2840, 1860), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((1050, 1975), "李彦锟", fill=fillcolor, font=imgfont) imgdraw.text((1860, 1975), "620123199509122171", fill=fillcolor, font=imgfont_one) imgdraw.text((2800, 1975), "10000001", fill=fillcolor, font=imgfont) imgdraw.text((1050, 2075), "不在状态", fill=fillcolor, font=imgfont) imgdraw.text((1860, 2075), "80%", fill=fillcolor, font=imgfont) imgdraw.text((2800, 2075), "自己", fill=fillcolor, font=imgfont) imgdraw.text((1050, 2175), "没有性质", fill=fillcolor, font=imgfont) imgdraw.text((1860, 2175), "没有性质", fill=fillcolor, font=imgfont) imgdraw.text((2800, 2175), "什么方式", fill=fillcolor, font=imgfont) imgdraw.text((1050, 2275), "永远不到期", fill=fillcolor, font=imgfont) imgdraw.text((1860, 2275), "甘肃省兰州市七里河去杨家桥兰电小区一单元401", fill=fillcolor, font=imgfont) imgdraw.text((1050, 2375), "120m²", fill=fillcolor, font=imgfont) imgdraw.text((1860, 2375), "120m²", fill=fillcolor, font=imgfont) imgdraw.text((2800, 2375), "2", fill=fillcolor, font=imgfont) imgdraw.text((950, 2675), "否", fill=fillcolor, font=imgfont) imgdraw.text((1650, 2675), "否", fill=fillcolor, font=imgfont) imgdraw.text((2330, 2675), "否", fill=fillcolor, font=imgfont) imgdraw.text((2850, 2675), "否", fill=fillcolor, font=imgfont) imgdraw.text((1000, 2880), "没什么依据", fill=fillcolor, font=imgfont) imgdraw.text((1400, 2880), "www.baidu.com", fill=fillcolor, font=imgfont) imgdraw.text((2120, 2880), "2018.6", fill=fillcolor, font=imgfont) imgdraw.text((2500, 2880), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2920, 2880), "10000", fill=fillcolor, font=imgfont) imgdraw.text((1000, 3580), "5000000", fill=fillcolor, font=imgfont) imgdraw.text((1700, 3580), "10000", fill=fillcolor, font=imgfont) imgdraw.text((2250, 3580), "2000000", fill=fillcolor, font=imgfont) imgdraw.text((2850, 3580), "80%", fill=fillcolor, font=imgfont) imgdraw.text((1180, 4100), "3000000", fill=fillcolor, font=imgfont) imgdraw.text((1950, 4100), "0", fill=fillcolor, font=imgfont) imgdraw.text((2700, 4100), "10000000", fill=fillcolor, font=imgfont) imgdraw.text((850, 4200), "xx", fill=fillcolor, font=imgfont) imgdraw.text((1100, 4200), "xx", fill=fillcolor, font=imgfont) imgdraw.text((1950, 4200), "xxxxx", fill=fillcolor, font=imgfont) imgdraw.text((900, 4300), "yy", fill=fillcolor, font=imgfont) imgdraw.text((1900, 4300), "yyyyyy", fill=fillcolor, font=imgfont) imgdraw.text((2650, 4300), "20000", fill=fillcolor, font=imgfont) imgdraw.text((900, 4400), "zz", fill=fillcolor, font=imgfont) imgdraw.text((1800, 4400), "zzzzzz", fill=fillcolor, font=imgfont) imgdraw.text((1180, 4500), "wwww", fill=fillcolor, font=imgfont) imgdraw.text((1800, 4500), "wwwwww", fill=fillcolor, font=imgfont) targetimg.save(out_file_path, "png") return out_file_path ###第四张 async def image_to_text_four(data): im = Image.open(sourceimg4) # image 对象 out_file_path = await text_watermark(im, '三湘银行抵押快贷', out_file) targetimg = Image.open(out_file_path) imgdraw = ImageDraw.Draw(targetimg) imgfont = ImageFont.truetype(fontpath, size=48) fillcolor = "black" imgdraw.text((700, 785), "李亚珺", fill=fillcolor, font=imgfont) imgdraw.text((1000, 785), "6xxxxxxxxxxxxxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((1800, 785), "1xxxxxxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((2300, 785), "没关系", fill=fillcolor, font=imgfont) imgdraw.text((2800, 785), "无", fill=fillcolor, font=imgfont) imgdraw.text((700, 3015), "李亚珺", fill=fillcolor, font=imgfont) imgdraw.text((1000, 3015), "6xxxxxxxxxxxxxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((1800, 3015), "1xxxxxxxxxx", fill=fillcolor, font=imgfont) imgdraw.text((2300, 3015), "没关系", fill=fillcolor, font=imgfont) imgdraw.text((2800, 3015), "无", fill=fillcolor, font=imgfont) targetimg.save(out_file_path, "png") return out_file_path ###第五张 async def image_to_text_five(data): im = Image.open(sourceimg5) # image 对象 out_file_path = await text_watermark(im, '三湘银行抵押快贷', out_file) targetimg = Image.open(out_file_path) imgdraw = ImageDraw.Draw(targetimg) imgfont = ImageFont.truetype(fontpath, size=48) imgfont_one = ImageFont.truetype(fontpath, size=38) fillcolor = "black" #imgdraw.text((700, 785), "李亚珺", fill=fillcolor, font=imgfont) targetimg.save(out_file_path, "png") return out_file_path async def waterQuery(data): url = [] url1 = await image_to_text_one(data) url2 = await image_to_text_two(data) url3 = await image_to_text_three(data) url4 = await image_to_text_four(data) url5 = await image_to_text_five(data) url.append(url1) url.append(url2) url.append(url3) url.append(url4) url.append(url5) return url
Python异步方法执行水印并且填充数据
最新推荐文章于 2023-06-08 18:49:03 发布