为什么我的代码无法更改图片宽高?

为什么我的代码无法更改图片宽高?

from PIL import Image, ImageDraw, ImageFont, ImageSequence, ImageFilter

a = input("你想要实现什么功能,请输入序号(1.更改图片类型)(2.滤镜)(3.查看或调整图片大小)")
b=input('图片名:')
img=Image.open(b)
img.show()
z=0

filters = [
    ImageFilter.GaussianBlur, # 高斯模糊滤镜
    ImageFilter.EMBOSS, # 浮雕滤镜
    ImageFilter.CONTOUR, # 轮廓滤镜
    ImageFilter.EDGE_ENHANCE_MORE, # 边缘增强滤镜
    ImageFilter.MinFilter,  # 最小过滤器滤镜
    ImageFilter.MaxFilter,  # 最大过滤器滤镜
]

if a=='1':
    q=input('后缀名:')
    for i in b:
        z+=1
        if i==".":
            z-=4
    img.save(b[0:z]+'.'+q)
elif a=='2':
    filter=input('选择滤镜:(1.高斯模糊滤镜)(2.浮雕滤镜)(3.轮廓滤镜)(4.边缘增强滤镜)(5.最小过滤器滤镜)(6.最大过滤器滤镜)')
    if filter=='1':
        img = img.filter(ImageFilter.GaussianBlur)
    if filter=='2':
        img = img.filter(ImageFilter.EMBOSS)
    if filter=='3':
        img = img.filter(ImageFilter.CONTOUR)
    if filter=='4':
        img = img.filter(ImageFilter.EDGE_ENHANCE_MORE)
    if filter=='5':
        img = img.filter(ImageFilter.MinFilter)
    if filter=='6':
        img = img.filter(ImageFilter.MaxFilter)
    img.show()
    img.save(b)
else:
    h=img.size[1]
    w=img.size[0]
    print('宽:',w)
    print('长:',h)
    n=input('是否调整大小?(是/否)')
    if n=='是':
        w=int(input('宽度:'))
        h=int(input('长度:'))
        img.resize((h,w)) 
        img.show()
        img.save(b)
****

就是这一串:

img

img


有帮助可以采纳一下,谢谢

【以下回答由 GPT 生成】

从代码中可以看出,你的程序尝试使用resize函数来更改图片的宽高,但是最终的结果与预期不符。问题出在了resize函数的使用上。resize函数返回一个新的Image对象,它代表了调整大小后的图片,而不会直接修改原始图片。因此,你需要将调整大小后的图片重新赋值给img变量,以便后续的操作使用。

下面是修改后的代码:

h = img.size[1]
w = img.size[0]
print('宽:', w)
print('长:', h)
n = input('是否调整大小?(是/否)')
if n == '是':
    w = int(input('宽度:'))
    h = int(input('长度:'))
    img = img.resize((w, h))  # 将调整大小后的图片重新赋值给img变量
    img.show()
    img.save(b)

这样修改后,resize函数返回的调整大小后的图片将赋值给img变量,然后通过show函数显示图片并保存。

希望这个解决方案能够帮助到你!如果你还有其他问题,请随时提问。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^