python实现图片批量压缩程序
本文实例为大家分享了python实现图片批量压缩程序的具体代码,供大家参考,具体内容如下
说明
- 运行环境:Win10Pycharm
- 程序没有用到面向对象编程方法,只是简单的面向过程设计
- 用到的模块:PIL、os、sys
- 使用方法:在Pycharm的terminal中输入”pythonxxx.pysource_dirdest_dir”就可以把source_dir中的图片文件进行压缩并保存到dest_dir中
源码
fromPILimportImage
importos
importsys
#定义可以识别的图片文件类型,可以自行扩充
valid_file_type=['.jpg','.png']
#定义压缩比,数值越大,压缩越小
SIZE_normal=1.0
SIZE_small=1.5
SIZE_more_small=2.0
defmake_directory(directory):
"""创建目录"""
os.makedirs(directory)
defdirectory_exists(directory):
"""判断目录是否存在"""
ifos.path.exists(directory):
returnTrue
else:
returnFalse
deflist_img_file(directory):
"""列出目录下所有文件,并筛选出图片文件列表返回"""
old_list=os.listdir(directory)
#printold_list
new_list=[]
forfilenameinold_list:
ifos.path.isfile(filename):
f,e=os.path.splitext(filename)
ifeinvalid_file_type:
new_list.append(filename)
else:
pass
else:
pass
#printnew_list
returnnew_list
defprint_help():
print"""
Thisprogramhelpscompressmanyimagefiles
youcanchoosewhichscaleyouwanttocompressyourimg(jpg/png/etc)
1)normalcompress(4Mto1Maround)
2)smallcompress(4Mto500Karound)
3)smallercompress(4Mto300Karound)
"""
defcompress(choose,des_dir,file_list):
"""压缩算法,img.thumbnail对图片进行压缩,还可以改变宽高数值进行压缩"""
ifchoose=='1':
scale=SIZE_normal
ifchoose=='2':
scale=SIZE_small
ifchoose=='3':
scale=SIZE_more_small
forinfileinfile_list:
img=Image.open(infile)
#size_of_file=os.path.getsize(infile)
w,h=img.size
img.thumbnail((int(w/scale),int(h/scale)))
img.save(des_dir+'/'+infile)
if__name__=="__main__":
src_dir,des_dir=sys.argv[1],sys.argv[2]
ifdirectory_exists(src_dir):
ifnotdirectory_exists(des_dir):
make_directory(des_dir)
#businesslogic
file_list=list_img_file(src_dir)
#printfile_list
iffile_list:
print_help()
choose=raw_input("enteryourchoice:")
compress(choose,des_dir,file_list)
else:
pass
else:
print"sourcedirectorynotexist!"
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。