Python不使用PIL如何导入图片 打印时文字如何显示在图片上方
不使用PIL/Pillow库导入图片的方案
以下是Python生态中不用PIL也能读取图片的常用方案,都可在PyCharm/VS Code环境中直接使用:
- 方案1:使用OpenCV库(cv2)
适合需要做图像后续处理的场景,读取后直接返回numpy数组格式的图像数据:import cv2 # 读取图片,默认返回BGR格式的numpy数组 img = cv2.imread("你的图片路径.png") # 如果需要转换为RGB格式可以加这行 img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) - 方案2:使用matplotlib库的imread
适合和matplotlib绘图结合使用的场景,读取后直接返回RGB格式的数组:import matplotlib.image as mpimg img = mpimg.imread("你的图片路径.png") - 方案3:使用Python内置tkinter库的PhotoImage
适合GUI开发场景,不需要额外安装第三方库:from tkinter import Tk, PhotoImage root = Tk() # 仅支持png、gif等有限格式,jpg格式需要额外的tkinter扩展 img = PhotoImage(file="你的图片路径.png") - 方案4:直接读取二进制图片文件
如果只需要存储、传输图片不需要解析内容,可以直接按二进制格式读取:with open("你的图片路径.png", "rb") as f: img_bytes = f.read()
打印时让文字显示在图片上方的设置方法
这里分两种常见的使用场景给出方案:
场景1:控制台/终端打印
如果是要在终端里先打印文字再显示字符画形式的图片,只要调整代码的执行顺序即可:先执行文字打印的代码,再执行图片转字符画并打印的代码即可。
场景2:生成可打印文件(PDF/图片)或直接调用系统打印
核心逻辑是控制渲染层级,保证文字的渲染顺序晚于图片,或者文字的层级参数高于图片:
- 用matplotlib实现的示例:
import matplotlib.pyplot as plt import matplotlib.image as mpimg img = mpimg.imread("test.png") # 先绘制图片作为底层 plt.imshow(img) # 再绘制文字,设置zorder参数大于图片的默认zorder(0)即可保证在上层 plt.text(100, 100, "要显示的文字", fontsize=20, color="red", zorder=10) plt.axis("off") # 直接打印或者保存后打印都可以保证文字在图片上方 plt.show() - 用reportlab生成PDF打印的示例:
from reportlab.pdfgen import canvas c = canvas.Canvas("test.pdf") # 先画图片作为底层 c.drawImage("test.png", 100, 100, width=300, height=300) # 再绘制文字,后绘制的内容层级更高 c.drawString(150, 350, "要显示的文字") c.save()
注意:如果是直接调用系统打印机接口,同样遵循后渲染的内容在上的规则,调整文字和图片的发送顺序即可。
内容的提问来源于stack exchange,提问作者Malak Anas
相关产品推荐
相关产品推荐

