使用Python PIL将TIFF转PDF时的文件大小与质量问题
TIFF转PDF文件大小与质量失控问题(使用Python PIL)
我用Python PIL的Image模块将TIFF文件转换为PDF,但无法控制转换后的文件大小与质量变化,代码改编自Stack Overflow相关讨论(Python 3.x):
import os from PIL import Image, ImageSequence def tiff_to_pdf(tiff_path): pdf_path = tiff_path + '.pdf' if not os.path.exists(tiff_path): raise Exception(f'{tiff_path} does not find.') image = Image.open(tiff_path) images = [] for i, page in enumerate(ImageSequence.Iterator(image)): page = page.convert("RGB") images.append(page) if len(images) == 1: images[0].save(pdf_path, quality = 85, optimize=True) else: images[0].save(pdf_path, quality = 85, optimize=True, save_all=True, append_images=images[1:]) os.remove(tiff_path) os.rename(pdf_path, tiff_path)
测试照片类TIFF(约2MB)时,文件大小缩减90%且质量损失极小,无问题;但处理客户的扫描文档类TIFF(约45KB,含大量手写内容)时,文件大小剧增1200%,还出现质量轻微损失(字母边缘原本纯白处出现浅灰像素)。
我已尝试调整save参数:
resolution参数无任何影响;- 将
quality从默认75调至85,质量略有改善; - 设置
optimize=True对文件大小有轻微帮助。
即使将quality降至5,文件大小仍增至原大小的300%且质量极差。
客户现有355GB的TIFF文件,转换后预计会增加约4TB,这种文件大小增长完全无法接受。我希望找到PIL中未注意到的设置,以保持转换后文件的大小与质量和原文件一致。由于PIL模块已部署在所有客户系统中,优先使用该模块,非必要不想新增其他模块。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

