PIL save()报错ValueError: unknown file extension: debug日志

本文记录了一位开发者在使用Python处理图片时遇到的未知扩展名错误,并通过matplotlib解决图片保存问题的过程。作者分享了调试过程和关键代码片段,适合遇到类似问题的读者参考。
部署运行你感兴趣的模型镜像

错误代码

#!/user/bin/python
# _*_ coding:utf-8 _*_
#开发人员:徐雨阳
#开发时间2022/6/3 23:28
#文件名称: 图片降像素.py
#开发工具: pycharm
#项目名称 pythonProjects
from PIL import Image
import matplotlib.pyplot as plt
import tqdm
import os
def ResizeImage(scale=1):
    path = '易拉罐'
    outpath = '易拉罐新'
    for a, b, c in os.walk(path):
        print(c)
    for i in tqdm.tqdm(c):
        f = os.path.join(path, i)
        if f.endswith("jpg"):
            # print(f,i)
            img = Image.open(f)
            width = int(img.size[0] * scale)
            height = int(img.size[1] * scale)
            type = img.format
            out = img.resize((width, height), Image.ANTIALIAS)
            print(os.path.join(outpath, i))
            out.save(path=os.path.join(outpath,i),fp='jpeg')
            # plt.imshow(out)
            # plt.axis('off')  # 去坐标轴
            # plt.xticks([])  # 去刻度
            # plt.savefig(os.path.join(outpath, i), bbox_inches='tight', pad_inches=-0.1)  # 注意两个参数
    """
    改变图片大小
    :param filein: 输入图片
    :param fileout: 输出图片
    :param width: 输出图片宽度
    :param height: 输出图片宽度
    :param type: 输出图片类型(png, gif, jpeg...)
    :return:
    """
    # 第二个参数:
    # Image.NEAREST :低质量
    # Image.BILINEAR:双线性
    # Image.BICUBIC :三次样条插值
    # Image.ANTIALIAS:高质量
if __name__ == "__main__":
    print("开始运行")
    ResizeImage(scale=0.3)

在这里插入图片描述
他会报错说是未知的扩展名,不过我检查发现扩展名没有错。而且网上关于这个报错信息讨论较少,我决定记录下今天的debug,给后来的同学避避雷。
源码
在这里插入图片描述
ext=‘.jpg’,我猜测是这里ext多一个’.'的原因,能力有限就不调试了,交给下一个有能力且愿意深挖的同学来解决吧(这个bug改到凌晨1点,吐了)

debug

我导入matplotlib.pyplot曲线救国

            print(os.path.join(outpath, i))
            # out.save(path=os.path.join(outpath,i),fp='jpeg')
            plt.imshow(out)
            plt.axis('off')  # 去坐标轴
            plt.xticks([])  # 去刻度
            plt.savefig(os.path.join(outpath, i), bbox_inches='tight', pad_inches=-0.1)  # 注意两个参数

将out附近的代码更改为plt.savefig()解决了这个问题
舒服了
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.11

Python3.11

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值