python 学习(二)处理图片、TXT文档
一、尝试实现场景:将一个txt文档内容读到程序的数组内
1、新建一个文档 array.txt,写入内容 ,如:

2、使用命令行读取:

1)在上述新建文档位置相同目录下打开命令提示窗
2)打开文件,读入变量line中,打印可查看结果
3)不知道上述命令怎么办? 百度python怎么读txt 或查看官方文档、教程
3、使用文件读取,在新建文档同级目录下新建 rtext.py文件,编写代码:
import numpy as np filename = 'array.txt' # txt文件和当前脚本在同一目录下,所以不用写具体路径 pos = [] Efield = [] with open(filename, 'r') as file_to_read: while True: lines = file_to_read.readline() # 整行读取数据 if not lines: break # 将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号,则传入‘,'字符。 p_tmp, E_tmp = [float(i) for i in lines.split()] pos.append(p_tmp) # 添加新读取的数据 Efield.append(E_tmp) pass pos = np.array(pos) # 将数据从list类型转换为array类型。 Efield = np.array(Efield) pass print(pos) print(Efield)
执行如下:

成功将文档内容写入数据中。接下来可编程处理。处理完成后写入txt。写入使用 file.write("要写入的内容") 即可
4、将文本中的文字转换为图片,需要安装图片插件这里用PILLOW,命令行输入 pip install pillow 安装完成后,新建一个gxh.txt,写入要生成图片的文本

新建 t2p.py文件,插入以下代码
import os from PIL import Image, ImageFont, ImageDraw #import numpy as np filename = 'gzh.txt' #(100,50)设置图片大小,(255,255,255)设置图片背景钯 font = ImageFont.truetype(os.path.join("fonts", "msyh.ttf"), 20)#设置字体 pos = [] with open(filename, 'r') as file_to_read: while True: lines = file_to_read.readline() # 整行读取数据 if not lines: break # 将整行数据分割处理,如果分割符是空格,括号里就不用传入参数,如果是逗号,则传入‘,'字符。 p_tmp = [str(i) for i in lines.split()] pos.append(p_tmp) # 添加新读取的数据 pass #pos = np.array(pos) # 将数据从list类型转换为array类型。 pass for text in pos: im = Image.new("RGB", (150, 30), (255, 255, 255)) dr = ImageDraw.Draw(im) text=''.join(text) dr.text((10, 3),text, font=font, fill="#000000") im.show() im.save("%s.png"%text)
命令框输入 python p2t.py,在同目录下生成五张图片,txt文件中一行字符一张图片。
5、使用图形界面输入文本,生成验证码图片,执行效果如下:

新建txt2pic.py文件并插入如下代码:
from PIL import Image, ImageDraw, ImageFont, ImageFilter #导入图片需要库 from tkinter import * #Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用 import tkinter.messagebox as messagebox import random,os,PIL #图片对象 class Rndpic(): # 随机颜色1: def rndColor(self): return (random.randint(64, 255), random.randint(64, 255), random.randint(64, 255)) # 随机颜色2: def rndColor2(self): return (random.randint(32, 127), random.randint(32, 127), random.randint(32, 127)) def drwRndpic(self,txt): # 240 x 60: width = 60 * 4 height = 60 image = PIL.Image.new('RGB', (width, height), (255, 255, 255)) # 创建Font对象: font = ImageFont.truetype(os.path.join("fonts", "msyh.ttf"), 45) # 创建Draw对象: draw = ImageDraw.Draw(image) # 填充每个像素: for x in range(width): for y in range(height): draw.point((x, y), fill=self.rndColor()) # 输出文字 for t in range(len(txt)): draw.text((60 * t + 10, 5), txt[t], font=font, fill=self.rndColor2()) #修改text[t]yl rndChar()为生成随机数 # 模糊: image = image.filter(ImageFilter.BLUR) # 显示并保存图片 image.show() image.save(txt+'.jpg', 'jpeg') class Application(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.pack() self.createWidgets() #生成界面 提示、输入框、执行、退出按键 def createWidgets(self): self.Label = Label(self, text='please 4 char:') self.Label.pack() self.txtInput = Entry(self) self.txtInput.pack() self.alertButton = Button(self, text='生成图片', command=self.t2p) self.alertButton.pack() self.quitButton = Button(self, text='Quit', command=self.quit) self.quitButton.pack() #定义生成图片函数 def t2p(self): txt = self.txtInput.get() or 'null' rndpic = Rndpic() draw = rndpic.drwRndpic(txt) app = Application() # 设置窗口标题: app.master.title('Hello World') # 主消息循环: app.mainloop()
6.打包项目,生成个人小工具:
在上面txt2pic.py文件目录下打开命令提示窗输入 pyinstaller -F txt2pic.py 打包文件,在生成的dist文件平下找到txt2pic.exe,双击执行即可完成个人图片生成小工具.
总结: 1.图形界面后续学习,现在界面超丑
2.图片只显示4位字符,可修改程序图片大小的设置内容增加通用性
3.画图功能后续学习,初学本案例图片太简陋

浙公网安备 33010602011771号