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

移除TIFF图片损坏EXIF警告时,如何保留所有页面?

保留多页TIFF所有页面并移除EXIF的解决方案

你的问题出在原代码仅处理了TIFF文件的第一页,没有遍历所有页面进行处理,最终保存时自然只剩单页。要保留所有页面,需要遍历TIFF的每一帧,逐个移除EXIF后再批量保存。

以下是修改后的代码:

from PIL import Image

def remove_exif_from_multipage_tiff(image_name):
    # 打开TIFF文件
    with Image.open(image_name) as img:
        processed_pages = []
        # 遍历所有页面
        try:
            while True:
                # 复制当前页面的像素数据(不携带EXIF)
                page_data = list(img.getdata())
                page_without_exif = Image.new(img.mode, img.size)
                page_without_exif.putdata(page_data)
                processed_pages.append(page_without_exif)
                # 切换到下一页
                img.seek(img.tell() + 1)
        except EOFError:
            # 遍历完所有页面
            pass

        if not processed_pages:
            return
        
        print(f'removing EXIF from {len(processed_pages)} pages of {image_name}...')
        # 保存所有处理后的页面,save_all=True 启用多页保存
        processed_pages[0].save(
            image_name,
            format='TIFF',
            save_all=True,
            append_images=processed_pages[1:]
        )

remove_exif_from_multipage_tiff('ggg.tiff')
print('Done')

关键说明:

  • 遍历页面:通过seek()和tell()方法切换TIFF的帧,直到触发EOFError(表示所有页面遍历完成)。
  • 批量保存:调用save()时指定save_all=True,并通过append_images参数传入剩余页面,实现多页TIFF的保存。
  • EXIF移除逻辑:保留了你原有的方式——创建新图片并复制像素数据,这样新图片不会携带原有的EXIF信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:02