获取PPT中的MSO格式图片报错

亲爱的小伙伴们,在求知的漫漫旅途中,若你对深度学习的奥秘、Java 与 Python 的奇妙世界,亦或是读研论文的撰写攻略有所探寻,那不妨给我一个小小的关注吧。我会精心筹备,在未来的日子里不定期地为大家呈上这些领域的知识宝藏与实用经验分享。每一个点赞,都如同春日里的一缕阳光,给予我满满的动力与温暖,让我们在学习成长的道路上相伴而行,共同进步✨。期待你的关注与点赞哟!

image.ext的报错ValueError("unsupported image format, expected one of: dict_keys(['BMP', 'GIF', 'JPEG', 'PNG', 'TIFF', 'WMF']), got 'MPO'")

错误信息表明,您正在使用一个期望得到特定图像格式列表的方法或函数,但是传递给它的格式是 ‘MPO’,这不在预期的格式列表中。为了解决这个问题,您需要做以下几步:

  1. 检查当前格式是否在支持的格式列表中。
  2. 如果格式不受支持,您可以选择将其转换为支持的格式,例如 JPEG。
  3. 更新您的代码,以处理这种情况。

以下是一个示例代码块,它展示了如何处理这个错误:

from PIL import Image
import io

# 假设支持的格式列表
supported_formats = {'BMP', 'GIF', 'JPEG', 'PNG', 'TIFF', 'WMF'}

# 假设 save_image 函数已定义
def save_image(image_bytes, image_path):
    with open(image_path, "wb") as file:
        file.write(image_bytes)

# ... 其他代码 ...

if shape.shape_type == MSO_SHAPE_TYPE.PICTURE:
    image = shape.image
    image_bytes = image.blob  # 获取图像的二进制数据

    # 使用 PIL 尝试打开图片
    try:
        with Image.open(io.BytesIO(image_bytes)) as img:
            # PIL 打开了图片,现在我们可以检查和转换格式
            original_format = img.format.upper()
            if original_format not in supported_formats:
                # 格式不受支持,转换为 JPEG
                img = img.convert('RGB')
                image_ext = 'JPEG'
            else:
                image_ext = original_format

            # 保存图片
            image_filename = f"slide_{slide_num}_image_{shape_num}.{image_ext}"
            image_path = os.path.join(image_dir, image_filename)
            img.save(image_path)  # 使用 PIL 保存图片

            # ... 其他代码,例如更新 slide_text ...

    except IOError:
        # PIL 无法打开图片,可能是因为格式不受支持
        print(f"Unsupported image format or corrupted image. Skipping.")
        continue  # 跳过当前循环的剩余部分

# ... 其他代码 ...

在这个代码中,我们首先尝试使用 PIL 打开图片。如果图片成功打开,我们检查其格式是否在支持的格式列表中。如果不在,我们将图片转换为 RGB 格式,并将其保存为 JPEG。如果图片格式是支持的,我们直接使用原始格式保存图片。

你可能感兴趣的:(ppt,python)