import os
from PIL import Image
class imgcut():
def getpaths(self):
'''输入目录,返回图片的绝对路径列表'''
while True:
dir=input('请输入目录路径: ')
paths=[]
for f in os.listdir(dir):
if f.endswith(('.png','.jpg','.jpeg','.gif')) :
paths.append(f)
if paths==():
print('路径错误或者当前路径没有图片,请重新输入: ')
continue
print('识别到的文件:\n', paths)
return dir,paths
def crop(self):
dir,paths=self.getpaths()
x,y=input('请输入长和宽(空格隔开): ').split()
x,y=int(x),int(y)
for path in paths:
img = Image.open(os.path.join(dir,path))
x0, y0 = img.size
box = [(x0 - x) // 2, (y0 - y) // 2, (x0 + x) // 2, (y0 + y) // 2]
imgnew=img.crop(box)
name,ext=os.path.splitext(path)
savedir,savename=dir+'\\crop\\',name+'_'+ext
if not os.path.exists(savedir):
os.makedirs(savedir)
imgnew.save(savedir+savename)
print('save:',savedir+savename)
pass
def resize(self):
dir,paths=self.getpaths()
x,y=input('请输入长和宽(空格隔开,若等比例缩放另其中一个为-1): ').split()
x,y=int(x),int(y)
for path in paths:
img = Image.open(os.path.join(dir,path))
x0,y0=img.size
x=int(y/y0*x0) if x==-1 else x
y=int(x/x0*y0) if y==-1 else y
imgnew=img.resize((x,y),Image.ANTIALIAS)
name,ext=os.path.splitext(path)
savedir,savename=dir+'\\',name+'_'+ext
if not os.path.exists(savedir):
os.makedirs(savedir)
imgnew.save(savedir+savename)
print('save:',savedir+savename)
pass
def menu(self):
print('格式需要再添加')
print('默认采用中心裁剪')
while True:
print('-----------------------')
print('1. 图片裁剪')
print('2. 图片伸缩')
print('-1. 退出')
c=input()
if c=='1':
self.crop()
elif c=='2':
self.resize()
elif c=='-1':
break
else:
print('请重新输入:')
def custom(self):
pass
imgcut().menu()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现