为什么两个除了字体不一样,但下面这个报错了
#-*- coding:utf-8 -*-
from PIL import Image,ImageDraw,ImageFont
import cv2
font_path='./font-family/MiNiJianPangWa-1.ttf'
def draw(image_path,draw_text):
img=cv2.imread(image_path) #读取图片文件
img_temp=Image.new("RGB",[img.shape[1],img.shape[0]],"white") #以指定的模式和大小创建一个新图像(白色填充),image.shape[1]为像素大小
drawObj=ImageDraw.Draw(img_temp) #创建一个可以在给定图像上绘图的对象
n=8 #间隔大小
m=8 #字体大小
font=ImageFont.truetype(font_path,size= m)
for i in range(0,img.shape[0],n): #通过两个for循环,依次定位到每个文字所在的色块
for j in range(0,img.shape[1],n):
drawObj.text([j,i],draw_text[int(j/n)%len(draw_text)],fill=(img[i][j][2],img[i][j][1],img[i][j][0]),font=font)
img_temp.save('img_'+image_path)
draw('bingbing.jpg',"都是冰冰的")
``
#-*- coding:utf-8 -*-
from PIL import Image,ImageDraw,ImageFont
import cv2
font_path='C:\Windows\Fonts\迷你简楷体字体下载_爱给网_aigei_com (1).ttf'
def draw(image_path,draw_text):
img=cv2.imread(image_path) #读取图片文件
img_temp=Image.new("RGB",[img.shape[1],img.shape[0]],"white") #以指定的模式和大小创建一个新图像(白色填充),image.shape[1]为像素大小
drawObj=ImageDraw.Draw(img_temp) #创建一个可以在给定图像上绘图的对象
n=8 #间隔大小
m=8 #字体大小
font=ImageFont.truetype(font_path,size= m)
for i in range(0,img.shape[0],n): #通过两个for循环,依次定位到每个文字所在的色块
for j in range(0,img.shape[1],n):
drawObj.text([j,i],draw_text[int(j/n)%len(draw_text)],fill=(img[i][j][2],img[i][j][1],img[i][j][0]),font=font)
img_temp.save('img_'+image_path)
draw('I LOVE clx.jpg',"都是冰冰的")
[ WARN:0@0.105] global D:\a\opencv-python\opencv-python\opencv\modules\imgcodecs\src\loadsave.cpp (239) cv::findDecoder imread_('I LOVE clx.jpg'): can't open/read file: check file path/integrity
Traceback (most recent call last):
File "D:/python/工作存放/venv/666.py", line 20, in <module>
draw('I LOVE clx.jpg',"都是冰冰的")
File "D:/python/工作存放/venv/666.py", line 11, in draw
img_temp=Image.new("RGB",[img.shape[1],img.shape[0]],"white") #以指定的模式和大小创建一个新图像(白色填充),image.shape[1]为像素大小
AttributeError: 'NoneType' object has no attribute 'shape'
这里极大概率是你图片都没读取成功, 把
draw('I LOVE clx.jpg',"都是冰冰的") 中的 'I LOVE clx.jpg' 的空格去掉, 把文件名字中的空格去掉, 应该就ok了
读取文件时如果文件名有空格你这样写是不合法的, 应该加上.
但是我仍然强烈建议你在读取文件时, 文件名中不要出现空格