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

如何使用Python向RTF文件中添加图片?

向RTF文件插入图片的Python实现

直接写入Image对象行不通,因为RTF有特定的图片嵌入格式——需要将图片编码为Base64,并用RTF的图片控制字包裹后写入文件。以下是具体实现步骤和代码:

实现思路

RTF通过{\pict}控制块嵌入图片,需要指定图片类型、图片尺寸,再填入编码后的图片数据。核心步骤:

  1. 读取图片并转为对应格式的字节流
  2. 将字节流编码为Base64字符串
  3. 构造符合RTF规范的图片片段
  4. 追加到目标RTF文件中

完整代码示例

from PIL import Image
import base64
import io

# 读取图片(用原始字符串避免路径转义问题)
img_path = r"FATS5\A.JPG"
with Image.open(img_path) as img:
    width, height = img.size
    
    # 将图片转为JPEG字节流
    img_byte_stream = io.BytesIO()
    img.save(img_byte_stream, format='JPEG')
    img_bytes = img_byte_stream.getvalue()
    
    # 编码为Base64字符串
    img_base64 = base64.b64encode(img_bytes).decode('utf-8')

# 构造RTF图片片段
# \picw/pich是原始像素宽高,\picwgoal/pichgoal是显示宽高(此处与原始尺寸一致)
rtf_img_block = (
    f"{{\\pict\\jpegblip\\picw{width}\\pich{height}\\picwgoal{width}\\pichgoal{height}"
    f"{img_base64}}}"
)

# 追加到RTF文件
with open('TextDrop/TESTINGN.rtf', 'a', encoding='utf-8') as f:
    f.write(rtf_img_block)

关键细节说明

  • 图片类型控制字:JPEG用\jpegblip,PNG用\pngblip,BMP用\bmpblip,需根据图片格式对应修改
  • 尺寸参数:\picw/\pich是图片原始像素尺寸,\picwgoal/\pichgoal是编辑器中显示的尺寸,可根据需求调整
  • 编码方式:RTF支持Base64或十六进制编码,Base64更简洁易处理

运行代码后,用写字板打开目标RTF文件即可看到插入的图片。

内容的提问来源于stack exchange,提问作者Fishdawg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:27:22