Python异步方法执行水印并且填充数据

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值