Python:读取数据库+图片上增加文字

流程:
1.数据库创建
2.python依赖库安装与连接
3.图片坐标定位与文字填入
4.数据库文字回填
一、数据库创建
使用Navicat来创建库和表。如下图,为Information_DS建立4个表

image.png
终端连接mysql:mysql -u root -proot (用户名、密码,其中-p后面不接空格)
Q&A:
1.输入字符时,提示Incorrect string value: '\xE4\xBC\x9A\xE5\x91\x98' for column 'recipient' at row 1
解答:修改字段字符集为utf 16
2.外键约束设置
解答:其他表设置外键,删除时“set null”、更新时“Restrict”。对应主键的数据类型、位数、名称都必须一致
image.png

二、python依赖库安装与连接
1)安装
终端执行如下4条命令:

#shell终端
〇 xcode-select --install
①ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
②brew unlink mysql-connector-c
③brew install mysql

Q&A:

1.fatal error :'my_config.h' file not found
image.png

解答:

1:安装的mysql库没有加入环境变量,需要找到安装的mysql存放在哪个目录。终端窗口执行:

#shell终端
find / -name mysql_config #查找到.h文件路径
vi ~/.bash_profile 
export PATH=$PATH:.h文件路径
source ~/.bash_profile

2.MySQL不是单独安装的,是安装的一个MAMP集成开发环境包,在MAMP中PHP和MySQL的头文件都是没有的,所以会报出这个错误。我们有两种解决方式,一种是重新编译MySQL,一种是单独安装mysq-connector-c,因为开发环境包已经自带了MySQL了,我们就不再编译安装了,单独安装就ok。
Mac执行以下语句即可:brew install mysql-connector-c,再次执行pip install MySQL-python,出现报错:File "setup_posix.py",line 8,in dequote

image.png
解答:https://www.jianshu.com/p/da9dd5dd4bd2
2)连接
python中数据库连接,输出单个文字

try:
    conn=pymysql.connect(host='localhost',user='root', password='root',database='Information_DS',charset='utf8')
    sql="select * from People"
    cur=conn.cursor()
    cur.execute(sql)
    data=cur.fetchall()
    conn.close()
    print data[0][1]
except Exception,e:
    print e

Q&A:

1.输出的字符显示\xe7等
image.png
解答:

可能1:数据库编码需要改成utf-8,

  1. Navicat中,选择“设计表”-“选项”,修改默认字符集“utf8”,默认排序规则“utf8_general_ci”,字段页也需要修改对应的字符集。
    image.png
    image.png

    2)终端中,查看和修改字符集如下:

#shell终端
mysql -u root -proot
use Information_DS;
show full columns from 表名;
alter table 表名 convert to character set 字符集;

可能2:不支持中文,需要单个输出才能显示中文如:people[0][0]
三、图片坐标定位与文字填入
1)身份证ps掉关键字段

image.png
image.png
2)查询字段坐标位置

from PIL import Image
import matplotlib.pyplot as plt
#显示图片具体位置坐标
#正面(110,70)姓名  (110,112)性别  (245,112)民族   (110,160)年 (211,160)月 (272,160)日 (110,200)住址 (197,320)证号
#反面 (241,280)机关  (241,327)有效期限
img = Image.open('/Users/funny/Downloads/back.jpg')

plt.figure("Image") # 图像窗口名称
plt.imshow(img)
plt.axis('on') # 关掉坐标轴为 off
plt.show()

3)图片上增加文字
网上下载.ttf格式的字体,双击安装,默认Mac OS文字库路径:/System/Library/Fonts/

im=Image.open('/Users/funny/Downloads/front.jpg')
draw=ImageDraw.Draw(im)
newfont=ImageFont.truetype('/Users/funny/Library/Fonts/微软vista黑体.ttf',20)
draw.text((110,70),'fun',(0,0,0),font=newfont)
draw.text((110,112),'girl',(0,0,0),font=newfont)
draw.text((245,112),'a',(0,0,0),font=newfont)
draw.text((110,160),'1990',(0,0,0),font=newfont)
draw.text((211,160),'01',(0,0,0),font=newfont)
draw.text((272,160),'22',(0,0,0),font=newfont)
draw.text((110,200),'guangdongshenzhen',(0,0,0),font=newfont)
draw.text((197,320),'44522119900122',(0,0,0),font=newfont)
im.show()
im.save('/Users/funny/Downloads/1.jpg')

显示效果:
image.png
image.png

如果是中文字,需要修改成

draw.text((110,70),u'程程',(0,0,0),font=newfont)

**四、数据库文字回填 **

#!/usr/bin/python
# -*- coding: UTF-8 -*-

import os
from PIL import Image,ImageFont,ImageDraw
import pymysql
import sys
import datetime
import cv2
reload(sys)
sys.setdefaultencoding('utf8')


def DrawID():

    conn = pymysql.connect(host='localhost', user='root', password='root', database='Information_DS', charset='utf8')
    sql = "select People.idCard,name,sex,ethnicity,birth,idAddress,authority,beginDate,endDate from People,IDcard where People.idCard =IDcard.idCard"
    cur = conn.cursor()
    cur.execute(sql)
    data = cur.fetchall()
    conn.close()

    for row in data:

        idCard = row[0]
        name = row[1]
        sex = row[2]
        ethnicity = row[3]
        birth = row[4]
        birth_Y = str(birth)[0:4]
        birth_M = str(birth)[5:7]
        birth_D = str(birth)[8:10]
        idAddress = row[5]
        Add_front = idAddress[:15]
        Add_back = "\n"+idAddress[15:]
        authority = row[6]
        beginDate = row[7]
        begin_Y = str(beginDate)[0:4]
        begin_M = str(beginDate)[5:7]
        begin_D = str(beginDate)[8:10]
        benginDateformat = begin_Y + "." + begin_M + "." + begin_D
        endDate = row[8]
        end_Y = str(endDate)[0:4]
        end_M = str(endDate)[5:7]
        end_D = str(endDate)[8:10]
        endDateformat = end_Y + "." + end_M + "." + end_D
        expireDate = benginDateformat + '-' + endDateformat


        im=Image.open('/Users/funny/Downloads/front.jpg')
        newfont = ImageFont.truetype('/Users/funny/Library/Fonts/微软vista黑体.ttf', 20)
        draw=ImageDraw.Draw(im)
        draw.text((110,70),name,(0,0,0),font=newfont)
        draw.text((110,112),sex,(0,0,0),font=newfont)
        draw.text((245,112),ethnicity,(0,0,0),font=newfont)
        draw.text((110,160),birth_Y,(0,0,0),font=newfont)
        draw.text((211,160),birth_M,(0,0,0),font=newfont)
        draw.text((272,160),birth_D,(0,0,0),font=newfont)
        draw.text((110,200),Add_front,(0,0,0),font=newfont)
        draw.text((110,205),Add_back, (0, 0, 0), font=newfont)
        draw.text((197,320),idCard,(0,0,0),font=newfont)
        #im.show()
        im.save('/Users/funny/Downloads/身份证/'+name+'_正面.jpg')

        im2=Image.open('/Users/funny/Downloads/back.jpg')
        draw=ImageDraw.Draw(im2)
        newfont=ImageFont.truetype('/Users/funny/Library/Fonts/微软vista黑体.ttf',20)
        draw.text((241,268),authority,(0,0,0),font=newfont)
        draw.text((241,315),expireDate,(0,0,0),font=newfont)
        #im2.show()
        im2.save('/Users/funny/Downloads/身份证/'+name+'_反面.jpg')


if __name__=="__main__":
    DrawID()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335