You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:57:03