为什么我的代码无法更改图片宽高?
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)
****
就是这一串:
【以下回答由 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
函数显示图片并保存。
希望这个解决方案能够帮助到你!如果你还有其他问题,请随时提问。
【相关推荐】