画图-身份证

画图函数:

   base_dir = f'{main.BASE_DIR}/quality_management_logic/dataCenter/'
        self.draw.text((55, self.height * 0.31), self.personName, (0, 0, 0),
                       font=ImageFont.truetype(os.path.join(base_dir, 'msyh.ttc'),24))  #personname

应用:
# -*- coding: utf-8 -*-
# import random, string
# import datetime
from tkinter import *
import os
from PIL import Image,ImageDraw,ImageFont
from quality_management_logic.commonCenter.Pan import get_advance,yaml_w,month_trans
import main
#保存图片

class GUICard(object):
    def __init__(self):
        get_Advance = get_advance('YUANDING')
        self.personName = str(get_Advance.get('userName')).ljust(15, ' ')
        # self.personName='SHOUXINPASS'.ljust(15, ' ')
        self.fathersName = str(get_Advance.get('fatherName')).ljust(15, ' ')
        self.birthday = get_Advance.get('birthDate')
        self.panID = get_Advance.get('panNo')
        self.common_front_path = f'{main.BASE_DIR}/quality_management_logic/dataCenter/msyh.ttf'
        self.img_path = f'{main.BASE_DIR}/quality_management_logic/dataCenter/pancard_front.png'
        self.img = Image.open(self.img_path)
        self.draw = ImageDraw.Draw(self.img)
        self.width, self.height = self.img.size
    def InPutCard(self,path=f"{main.BASE_DIR}/quality_management_logic/dataCenter/pancard.jpg"):
        base_dir = f'{main.BASE_DIR}/quality_management_logic/dataCenter/'
        self.draw.text((55, self.height * 0.31), self.personName, (0, 0, 0),
                       font=ImageFont.truetype(os.path.join(base_dir, 'msyh.ttc'),24))  #personname
        self.draw.text((55 , self.height * 0.40), self.fathersName, (0, 0, 0),
                       font=ImageFont.truetype(os.path.join(base_dir, 'msyh.ttc'),24))   #fathername
        self.draw.text((self.width * 0.08, self.height * 0.50), self.birthday, (0, 0, 0),
                       font=ImageFont.truetype(os.path.join(base_dir, 'msyh.ttc'),24))   #brithday

        self.draw.text((self.width * 0.08, self.height * 0.63), self.panID, (0, 0, 0),
                       font=ImageFont.truetype(os.path.join(base_dir, 'msyh.ttc'),24))  #panid

        # ImageDraw.Draw(self.img)
        # imageFileSave =f"{main.BASE_DIR}/quality_management_logic/dataCenter/pancard.jpg"
        imageFileSave=path
        self.img.save(imageFileSave)
        # 写入yaml
        self.birthday1 = month_trans(self.birthday)
        ocrData = {"date_of_birth": self.birthday1, "pan_code": self.panID,
                   "pan_img1": "https://in.creditech.biz/image/fi360/0332747ff0385a210a97d702d5cb1d83.jpg",
                   "user_father_name": self.fathersName.strip(), "user_name": self.personName.strip()}
        yaml_w({"ocrData": ocrData, "userName": self.personName.strip(), "panNo": self.panID, "fatherName": self.fathersName.strip(),
                "birthDate": self.birthday})
        return imageFileSave

图:
在这里插入图片描述
接入前端:
在这里插入图片描述
在这里插入图片描述

热门文章

暂无图片
编程学习 ·

3.1.2 Jsoup请求URL

org.jsoup.Jsoup类可以用来处理连接操作。在org.jsoup.Jsoup类中提供了connect(String url)方法来创建一个新连接,该方法的实现依赖于Java网络通信包java.net。在创建连接之后,可通过具体请求方法(GET或POST等)获取URL对应的HTML文件。 如需要采集某页面中的文本内容。首先,…
暂无图片
编程学习 ·

《伸手系列》之分布式锁Redssion入门和源码解析

Redisson简介 Javaer都知道Jedis,Jedis是Redis的Java实现的客户端,其API提供了比较全面的Redis命令的支持。Redission也是Redis的客户端,相比于Jedis功能简单。Jedis简单使用阻塞的I/O和redis交互,Redission通过Netty支持非阻塞I/O。Jedis最新版本2.9.0是2016年的快3年了没…
暂无图片
编程学习 ·

Web会话管理

1.会话管理基本原理 1.隐藏域 将表单中的内容在显示页面时隐藏,不显示数据,在JSP 中将input标签type设置为hidden 生成一个隐藏表单域。将会话的唯一标识记录到隐藏域中的value值中,并设定name值。提交给服务器之后,服务器会根据根据会话标识找到会话对象。 缺点:实现比较…
暂无图片
编程学习 ·

Fincy究竟如何成为东南亚值得信赖的首选支付平台?

“去中心化”的区块链网络提供了低成本的信用解决机制,基础规则在被写入区块链协议后,可以一直保障链上合约按规则运行,而不需要特定的中心化机构维护。区块链技术带来的“共同账簿”有潜力实现全球市场的跨场所实时结算,大幅提高交易后处理环节的运行效率,为全球支付的拓…
暂无图片
中恒嘉业 ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络:信息往一个方向流动。包括MLP和CNN 循环神经网络:信息循环流动,网络隐含层输出又作为自身输入,包括RNN、LSTM、GAN等。 RNN模型结构如下图所示: 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
郑州普通话 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求? 如果单纯的使用Redux,因为redux的actionCreator返回一个plain object,所以不能在actionCreator中发起网络请求;reducer是一个纯函数,不能有副作用,所以也不能有异…
暂无图片
郑州普通话 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别? 1:vuex的异步数据不需要使用到中件间,redux需要 2:vuex可以直接commit,action不是必须的,redux是必须的 个人简介 我是歌谣,欢迎和大家一起交流前后端知…
暂无图片
代理记账 ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求? 如果单纯的使用Redux,因为redux的actionCreator返回一个plain object,所以不能在actionCreator中发起网络请求;reducer是一个纯函数,不能有副作用,所以也不能有异…
暂无图片
代理记账 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别? 1:vuex的异步数据不需要使用到中件间,redux需要 2:vuex可以直接commit,action不是必须的,redux是必须的 个人简介 我是歌谣,欢迎和大家一起交流前后端知…
暂无图片
cgfy ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络:信息往一个方向流动。包括MLP和CNN 循环神经网络:信息循环流动,网络隐含层输出又作为自身输入,包括RNN、LSTM、GAN等。 RNN模型结构如下图所示: 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
coreui ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别? 1:vuex的异步数据不需要使用到中件间,redux需要 2:vuex可以直接commit,action不是必须的,redux是必须的 个人简介 我是歌谣,欢迎和大家一起交流前后端知…
暂无图片
未来博客 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别? 1:vuex的异步数据不需要使用到中件间,redux需要 2:vuex可以直接commit,action不是必须的,redux是必须的 个人简介 我是歌谣,欢迎和大家一起交流前后端知…
暂无图片
建站日记 ·

[Redux/Mobx] Redux和vuex有什么区别?

[Redux/Mobx] Redux和vuex有什么区别? 1:vuex的异步数据不需要使用到中件间,redux需要 2:vuex可以直接commit,action不是必须的,redux是必须的 个人简介 我是歌谣,欢迎和大家一起交流前后端知…
暂无图片
mfbz ·

[Redux/Mobx] 在Redux中怎么发起网络请求?

[Redux/Mobx] 在Redux中怎么发起网络请求? 如果单纯的使用Redux,因为redux的actionCreator返回一个plain object,所以不能在actionCreator中发起网络请求;reducer是一个纯函数,不能有副作用,所以也不能有异…
暂无图片
mfbz ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络:信息往一个方向流动。包括MLP和CNN 循环神经网络:信息循环流动,网络隐含层输出又作为自身输入,包括RNN、LSTM、GAN等。 RNN模型结构如下图所示: 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
珊珊日记 ·

学习笔记六——循环神经网络

一、RNN 前馈神经网络:信息往一个方向流动。包括MLP和CNN 循环神经网络:信息循环流动,网络隐含层输出又作为自身输入,包括RNN、LSTM、GAN等。 RNN模型结构如下图所示: 展开之后相当于堆叠多个共享隐含层参数的前馈…
暂无图片
珊珊日记 ·

AOV网是否存在回路-拓扑排序-C++

拓扑排序是对测试AOV网是否存在回路的方法! 拓扑排序的过程中,由于需要查找所有以某顶点为尾的弧,即找到该顶点的所有出边,故图要采用邻接表的存储方式。但拓扑排序较邻接表的存储方式有一点不同,由于要查找入度为0的点…