Python实现无压缩合并PPM图片为PDF并保留色彩信息
保留PPM图片色彩的PDF合并方案
问题背景
我需要将若干PPM格式图片合并为PDF,选择PPM格式是为了保留色彩信息——因为JPG会通过平均部分区域色彩实现压缩。但使用Python的Pillow库将其转换为PDF时,默认采用JPG转换导致部分区域色彩丢失,请问该如何操作才能保留完整色彩?
问题核心
Pillow保存PDF时默认使用JPEG有损压缩编码,这会破坏PPM原本的完整色彩信息,和你选择PPM格式的初衷冲突。
解决方法
在调用save方法时,指定图片的嵌入格式为PNG(无损压缩,可完整保留色彩细节),通过format='PNG'参数实现。
修改后的代码
from PIL import Image import os import sys x = sys.argv[1] dir_path = "folder_directory" image_list = [] # 处理第一张图片作为PDF起始页 first_image_path = os.path.join(dir_path, os.listdir(dir_path)[0]) im_1 = Image.open(first_image_path).convert('RGB') # 遍历剩余图片 for idx, image_name in enumerate(os.listdir(dir_path)): if idx == 0: continue print(image_name) image_path = os.path.join(dir_path, image_name) im = Image.open(image_path).convert('RGB') image_list.append(im) # 保存PDF时指定PNG无损格式 im_1.save(f'saving_dir{x}.pdf', save_all=True, append_images=image_list, format='PNG')
额外优化说明
- 用
os.path.join拼接路径,避免不同系统下路径分隔符的兼容性问题 - 调整变量名提升可读性,逻辑更清晰
- 用
enumerate替代手动计数器,代码更简洁
内容的提问来源于stack exchange,提问作者Hardik
相关产品推荐
相关产品推荐

