python画图操作_python使用画图函数实现身份证操作

本文介绍了如何使用Python的PIL库来绘制身份证信息,包括姓名、父亲姓名、出生日期和身份证号。通过加载模板图片,然后利用draw.text()函数添加文字,并保存为新的图像文件。此外,还涉及到将信息写入yaml文件的步骤。
摘要由CSDN通过智能技术生成

画图函数:

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

图:

f77e586232f8e9227cce08c21ea9b125.png

接入前端:

d9130645bdaa0a0019548d3f5a7504b6.png

5aec6539681c38fe2b1a65f097f01994.png

本文地址:https://blog.csdn.net/kairui_guxiaobai/article/details/107067972

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

### 回答1: 以下是一个使用 NetworkX 库绘制随机网络图形的示例代码: ```python import networkx as nx import matplotlib.pyplot as plt import random # 创建一个空的无向图 G = nx.Graph() # 添加随机节点 for i in range(10): G.add_node(i) # 添加随机边 for i in range(10): for j in range(i+1, 10): if random.random() < 0.5: G.add_edge(i, j) # 绘制图形 pos = nx.spring_layout(G) nx.draw(G, pos, with_labels=True) plt.show() ``` 在上面的示例代码中,我们首先创建了一个空的无向图 `G`,然后添加了 10 个随机节点,并使用 `random` 方法随机添加了一些边。最后,使用 `spring_layout` 方法对节点进行布局,并使用 `draw` 方法绘制图形。你可以根据需要调整节点数量、边的概率等参数,来生成不同的随机网络图形。 ### 回答2: Python中有许多库可以用来绘制随机网络图形,例如NetworkX和Matplotlib。下面是一个使用NetworkX和Matplotlib库绘制随机网络图形的示例: ```python import networkx as nx import matplotlib.pyplot as plt import random # 创建一个空的无向图 G = nx.Graph() # 添加随机节点 num_nodes = 10 for i in range(num_nodes): G.add_node(i) # 添加随机边 num_edges = 15 for i in range(num_edges): # 随机选择两个节点,并判断它们之间是否已经有边 # 若没有边则添加一条边 while True: node1 = random.choice(list(G.nodes)) node2 = random.choice(list(G.nodes)) if not G.has_edge(node1, node2): G.add_edge(node1, node2) break # 绘制网络图形 nx.draw(G, with_labels=True, node_color='lightblue', edge_color='gray') plt.show() ``` 在这个例子中,首先我们创建了一个空的无向图 `G`,然后通过循环添加了一些随机节点和随机边。然后,使用`nx.draw()`函数绘制了这个网络图形,并使用`with_labels=True`参数显示节点标签,`node_color='lightblue'`设置节点的颜色,`edge_color='gray'`设置边的颜色。最后使用`plt.show()`展示了这个图形。 运行这段代码,会生成一个随机的网络图形,其中节点和边都是随机生成的。 ### 回答3: Python是一种强大的编程语言,它具有广泛的应用领域,包括数据分析、人工智能和可视化等。其中,通过使用Python绘制随机网络图形是一项常见任务。 在Python中,可以使用多个第三方库来实现绘制随机网络图形的功能。其中,最常用的库是NetworkX。NetworkX是一个用于创建、操作和研究复杂网络的Python库。 首先,我们需要在开发环境中安装NetworkX库。在安装完成后,可以开始编写代码来创建随机网络图形。 首先,我们需要导入所需的库: ```python import networkx as nx import matplotlib.pyplot as plt import random ``` 然后,我们创建一个空的图形对象: ```python G = nx.Graph() ``` 接下来,我们可以生成节点和边。可以采用循环的方式来添加节点: ```python num_of_nodes = 10 for i in range(num_of_nodes): G.add_node(i) ``` 然后,我们可以使用循环生成随机的边: ```python num_of_edges = 15 for i in range(num_of_edges): random_node1 = random.choice(list(G.nodes())) random_node2 = random.choice(list(G.nodes())) if random_node1 != random_node2: G.add_edge(random_node1, random_node2) ``` 最后,我们可以使用Matplotlib库来绘制图形: ```python nx.draw_networkx(G) plt.show() ``` 以上就是使用Python绘制随机网络图形的示例代码。你可以根据实际需求进行调整和扩展,例如改变节点和边的数量,添加节点属性和边权重等。 总结起来,使用Python绘制随机网络图形是一项易于实现且功能强大的任务,通过使用NetworkX和Matplotlib等库,我们可以快速生成和可视化复杂的网络图形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值