本次主要用到PIL库,该库中包含了图像旋转、改变大小、格式转化、图像增强等许多图像处理功能。
安装方法:
pip install pillow
(如遇安装不成功,需要先升级pip 在重试操作)
安装成功后可在命令行尝试输入form PIL import Image 查看是否成功
首先需要引入相关包:
from PIL import ImageFont
from PIL import Image
from PIL import ImageDraw
import os
import random
import time
import sys
设置路径变量
imgFontpath = r"F:\\project\\python" #主路径
imgFontpath += "\\imgFont\\"
#图片资源、文字资源的路径
fontPath = imgFontpath+'font\\' #文字路径
imagePath = imgFontpath+'image\\' #背景图片路径
#生成图片目录
cacheImagePath = imgFontpath +'cache\\'
取出资源路径中的所有资源文件名且随机选中一个文字和一张背景图片
fontListArr = os.listdir(fontPath)
imageListArr = os.listdir(imagePath)
#取出文件夹中所有文件名
fontRandomIndex = random.randint(0,len(fontListArr)-1)
imageRandomIndex = random.randint(0,len(imageListArr)-1)
#生成随机数
imageFilePath = imageListArr[imageRandomIndex]
fontFilePath = fontListArr[fontRandomIndex]
#取随机资源
打开图片资源
imgOpenObj = Image.open(imagePath+imageFilePath)
根据画布大小设置字体
fontSize = random.randint(int(imgOpenObj.height/10),int(imgOpenObj.width/10/2)) #字体大小
fontOpenObj = ImageFont.truetype(fontPath+fontFilePath, fontSize)
fontPosition = (fontSize,random.randint(0,20))
fontColor = (255,255,255)#字体颜色
填写要生成的文字
textContent = “平台商城系统模式软件技术开发服务商”
考虑到图片换行问题将文字自动换行
LineFontLength = int((imgOpenObj.width - fontPosition[0]) / fontSize)
#一行有几个字
TotalLineLength = int(len(textContent) / LineFontLength)+1 #总行数
#循环插入换行符
def StringInsertStrIndex(oldText,InsertIndex,InsertStr):
t1 = list(oldText)
t1.insert(InsertIndex,InsertStr) # 1的位置插入'e'
s1_new = ''.join(t1) # 连接起来
return s1_new
for i in range(TotalLineLength):
textContent = StringInsertStrIndex(textContent,(LineFontLength*i),'\n')
打开画布设置资源
drawImage = ImageDraw.Draw(imgOpenObj)
drawImage.text(fontPosition, textContent, fontColor, font=fontOpenObj)
填写生成文件名称
imgFileName=”平台商城系统模式软件技术开发服务商”
保存图片
imgFileName += '.jpg'
imgFilePath = r''+cacheImagePath+""+imgFileName;
# imgOpenObj.show() #预览图片
imgOpenObj.save(imgFilePath)
完整代码如下
基本概念 程序语言已经经历了40多年的发展,期间人们提出并完善了许多程序语言的概念。程序语言有交流算法和计算机实现的两重目的,现在程序设计语言种类繁多,他...
我们都知道store中的数据是不能持久化储存的,在刷新浏览器的时候store中的数据都会被清空,但有时候我们需要持久化储存一些数据,这里可以用到浏览器的本地存储...
储存系统主要用于保存数据和程序,没有任何一种单一的技术能够完全优化地满足计算机储存系统的要求:高速存取、大容量、低成本。因为在存储器技术中,存在以下的制约关系存...
今天为大家所介绍是elementUI,对,他就是那个和美团外卖,百度外卖三分天下的那个饿了吗外卖平台,Elementui是由饿了么前端团队推出的基于vue封装的...
win11或win10系统下nvm list availabl正常安装异常,原因居然是权限问题,使用管理员权限即可正常使用nvm install 命令。
nvm来切换多个版本的nodejs的时候确实很方便,但有时候因为网络的原因,会导致安装失败