营业执照数据生成
import pandas as pd
from PIL import Image
from PIL import ImageFilter
from PIL import ImageEnhance
import cv2
from PIL import ImageDraw, ImageFont
from PIL._imaging import fontimport csv
import codecs
#兩個函數(shù)用于保存需要的坐標(biāo)點
# def save_to(path,name):
# # file_csv =open(path,"a+",newline='',encoding="utf-8")
# file_csv = codecs.open(path, 'a+', 'utf-8') # 追加
# # writer=csv.writer(file_csv)
# writer = csv.writer(file_csv, delimiter=',', quotechar=',', quoting=csv.QUOTE_MINIMAL)
# for data in name:
# writer.writerow(data)def save_to(name,data):f = open(name,"a+",newline='',encoding='utf-8')csv_writer = csv.writer(f)csv_writer.writerow(data)f.close()data=pd.read_csv('E:\qichacha\data\qichacha.csv',encoding='gbk')
#字體大小
fnt = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 18)
fnt2 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 22)
fnt3 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 24)
fnt4 = ImageFont.truetype(r'E:\qichacha\gen_data\WeiRuanYaHei-1.ttf', 20)
# 按下列方式計算其余坐標(biāo)
# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]
for i in range(0,len(data)-1):im = Image.open('E:\qichacha\gen_data\model.jpg')draw = ImageDraw.Draw(im)#draw.text(左上坐標(biāo), 書寫內(nèi)容, fill='顏色', font=字體)draw.text((637, 566), data.iloc[i]['信用代碼'], fill='black', font=fnt) # 信用代碼w, h = fnt.getsize(data.iloc[i]['信用代碼'])# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]a=[637,566,637+w,566,637,566+h,637+w,566+h,data.iloc[i]['信用代碼']]#保存兩種格式為后面使用方便save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)loc1 = len(data.iloc[i]['登記機關(guān)'])for k in range(0,int(loc1/8)+1):#字體超過8個字,就換行try:draw.text((660, 1222+k*30), data.iloc[i]['登記機關(guān)'][k*8:k*8+8], fill='black', font=fnt3) # 登記機關(guān)w, h = fnt3.getsize(data.iloc[i]['登記機關(guān)'][k*8:k*8+8])# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]a = [660,1222+(k*30),660+w,1222+(k*30),660, 1222+(k*30)+h, 660+w,1222+(k*30)+h,data.iloc[i]['登記機關(guān)'][k*8:k*8+8]]save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)except:passif k==4:#超過5行就不顯示,可以調(diào)整breakloc2 = len(data.iloc[i]['注冊地址'])for j,m in enumerate(['企業(yè)名稱','類型','注冊地址','法定代表人','注冊資本','成立日期','營業(yè)期限']):# print(m)if m=="注冊地址":#防止字?jǐn)?shù)超過圖片本身draw.text((330, 635 + j * 40), data.iloc[i][m][0:30], fill='black', font=fnt2)w, h = fnt2.getsize(data.iloc[i][m][0:30])# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]a = [330, 635 + (j * 40), 330 + w, 635 + (j * 40), 330, 635 + (j * 40) + h, 330 + w, 635 + (j * 40) + h,data.iloc[i][m]]save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)else:draw.text((330, 635+j*40),data.iloc[i][m], fill='black', font=fnt2) # 企業(yè)名稱,類型,注冊地址,法定代表人,注冊資本,成立日期,營業(yè)期限w, h = fnt2.getsize(data.iloc[i][m])# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]a = [330, 635+(j*40), 330 + w, 635+(j*40), 330, 635 + (j*40) + h, 330 + w, 635 + (j*40)+ h,data.iloc[i][m]]save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)loc = len(data.iloc[i]['經(jīng)營范圍'])for n in range(0,int(loc/30)+1):try:draw.text((330, 920 +n*30),data.iloc[i]['經(jīng)營范圍'][n*30:n*30+30], fill='black', font=fnt4) # 經(jīng)營范圍w, h = fnt4.getsize(data.iloc[i]['經(jīng)營范圍'][n*30:n*30+30])# [寬,高,寬+w,高,寬,高+h,寬+w,高+h]a = [330, 920 +(n*30), 330 + w, 920 +(n*30), 330, 920 + (n*30) + h, 330 + w, 920 + (n*30) + h,data.iloc[i]['經(jīng)營范圍'][n * 30:n * 30 + 30]]save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)except:passif n==5:draw.text((330, 920 + (n+1) * 30), u'.............', fill='black', font=fnt4)#多余6行就寫省略號w, h = fnt4.getsize(".............")a = [330, 920 +((n+1)*30), 330 + w, 920 + ((n+1)*30), 330, 920 + ((n+1)*30)+ h, 330 + w, 920 + ((n+1)*30) + h,"............."]save_to("E:\qichacha\data\zuobiao\\txt\{}.txt".format(i), a)save_to("E:\qichacha\data\zuobiao\\csv\{}.csv".format(i), a)breakprint("成功--{}".format(data.iloc[i]['企業(yè)名稱']))im.save('E:\qichacha\img\yingye\{}.jpg'.format(data.loc[i]['信用代碼']))#保存import os
import cv2
import numpy as np
n=0
a=0
#圖片的融合。保存用循環(huán)數(shù)字。
path = r"E:\qichacha\background"
path1=r"E:\qichacha\img\yingye"
for i in os.listdir(path):#生成的營業(yè)執(zhí)照路徑back = os.path.join(path, i)image = cv2.imread(back)k = 0for j in os.listdir(path1):#營業(yè)執(zhí)照back1= os.path.join(path1, j)logo = cv2.imread(back1)# num = (logo.width, logo.height)height, width = logo.shape[0:2]#獲取寬高#圖片按寬高縮放cv2.resize(圖片, 縮放大小)image_1=cv2.resize(image, (width, height))logo_1=cv2.resize(logo, (width, height))#融合圖片cv2.addWeighted(主圖、背景圖, 權(quán)重, 輔圖, 權(quán)重, 0)image_copy = cv2.addWeighted(logo_1, 0.8, image_1, 0.2, 0)cv2.imwrite("E:\qichacha\img\\beijing\{}.jpg".format(a), image_copy)# cv2.waitKey(0)# cv2.destroyAllWindows()print("成功--{}{}".format(data.iloc[k]['企業(yè)名稱'],n))k += 1a+=1n+=1
#保存圖片,用信用代碼,前面加0,1,2區(qū)分不同的噪聲
# n=0
# path = r"E:\qichacha\background"
# path1=r"E:\qichacha\img\yingye"
# for i in os.listdir(path):#背景圖
# back = os.path.join(path, i)
# image = cv2.imread(back)
# k = 0
# for j in os.listdir(path1):#營業(yè)執(zhí)照
# back1= os.path.join(path1, j)
# logo = cv2.imread(back1)
# # num = (logo.width, logo.height)
# height, width = logo.shape[0:2]
# image_1=cv2.resize(image, (width, height))
# logo_1=cv2.resize(logo, (width, height))
# image_copy = cv2.addWeighted(logo_1, 0.6, image_1, 0.4, 0)
# cv2.imencode('.jpg', image_copy)[1].tofile("E:\qichacha\img\\beijing\{}{}".format(n,j))
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# print("成功--{}{}".format(n,j))
# k += 1
# n+=1#單張圖片的融合
# image=cv2.imread(r'E:\qichacha\background\\1.jpg')#背景圖
# logo = cv2.imread(r'E:\qichacha\img\yingye\\91110000MA00GXCN9M.jpg')#生成的營業(yè)執(zhí)照
# # 圖像融合
# height,width=logo.shape[0:2]
# # print(width,height)
# # a=cv2.resize(image, (width, height))
# image_1=cv2.resize(image, (width, height))
# logo_1=cv2.resize(logo, (width, height))
# combine = cv2.addWeighted(logo_1, 0.9, image_1, 0.1,0)
# cv2.imshow('s',combine)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
# cv2.imwrite("E:\qichacha\img\\beijing\j2.jpg", combine)#保存英文名字
# cv2.imencode('.jpg', image_copy)[1].tofile("E:\qichacha\img\\beijing\{}{}.jpg".format(data.iloc[k]['企業(yè)名稱'], n))#保存中文名#單張營業(yè)執(zhí)照的生成
# im = Image.open('E:\qichacha\gen_data\model.jpg')
# draw = ImageDraw.Draw(im)
# draw.text((330,633), data.iloc[118,1], fill='black', font=fnt2)#企業(yè)名稱
# w, h = fnt2.getsize(data.iloc[118,1])#寬高
# print(w,h)
# draw.text((330,675), data.iloc[118,6], fill='black', font=fnt2)#企業(yè)類型
# draw.text((330,715), data.iloc[118,9], fill='black', font=fnt2)#注冊地址
# draw.text((330,755), data.iloc[118,2], fill='black', font=fnt2)#法定代表人
# draw.text((330,800), data.iloc[118,4], fill='black', font=fnt2)#注冊資本
# draw.text((330,840), data.iloc[118,3], fill='black', font=fnt2)#成立日期
# draw.text((330,880), data.iloc[118,7], fill='black', font=fnt2)#營業(yè)期限# loc=len(data.iloc[118,10])
# for i in range(0,int(loc/30)):
# try:
# draw.text((330,920+i*30), data.iloc[117,10][i*30:i*30+31], fill='black', font=fnt4)#經(jīng)營范圍
# except:
# pass
# if i==5:
# draw.text((330, 920 + (i+1) * 30), u'.............', fill='black', font=fnt4)
# break
#
# draw.text((637,566), data.iloc[118,0], fill='black', font=fnt)#信用代碼
# draw.text((650,1222), data.iloc[118,8], fill='black', font=fnt3)#登記機關(guān)
# im.show()# image=Image.open(r'E:\qichacha\background\1.jpg')#背景圖
# logo = Image.open(r'E:\qichacha\img\營業(yè)執(zhí)照\安徽淘寶村實業(yè)集團有限公司.jpg')#生成的營業(yè)執(zhí)照
# num=(image.width,image.height)
# logo.thumbnail(num)#縮小營業(yè)執(zhí)照,背景圖大小
# image_copy=image.copy()#復(fù)制圖像背景圖
# x = int(random.randint(0, (image_copy.width- logo.width)+ 1))#隨機生成背景圖和營業(yè)執(zhí)照寬的差值之間的數(shù)值
# y= int(random.randint(0, (image_copy.height - logo.height) + 1))#隨機生成背景圖和營業(yè)執(zhí)照高的差值之間的數(shù)值
# image_copy.paste(logo,(x,y)) #將營業(yè)執(zhí)照放到指定粘貼位置(左上角坐標(biāo))
# resize(temImage, dstImage2, Size(temImage.cols * 2, temImage.rows * 2), 0, 0, INTER_LINEAR)
# plt.imshow(image_copy)
# plt.show()
# image_copy.save('E:\qichacha\img\背景營業(yè)執(zhí)照\j2.jpg')#保存
數(shù)據(jù):csv文件:https://download.csdn.net/download/yangzheng_520/21979543
模板:https://download.csdn.net/download/yangzheng_520/21979571
不行的按照前面文章自己爬取
關(guān)注一下,謝謝
總結(jié)
- 上一篇: JSON转换
- 下一篇: 支付宝拿技术开刀把扫码无情地革掉