日常前言
最近准备写一个摄影图片的发布功能,之前图方便就直接使用js获取图片了( https://www.messys.top/photos/ ) ,现在为了更加方便的使用该功能,当然是要加入后台管理的呀,所以便开了此篇。
先把标题的功能做出来(我不是标题党的呀!)
from PIL import Imagefile = '1.jpg'img = Image.open(file)w,h = img.sizew,h = round(w * 0.2),round(h * 0.2)// 去掉浮点,防报错img = img.resize((w,h), Image.ANTIALIAS)img.save('1.jpg', optimize=True, quality=85)// 质量为85效果最好
炒鸡简单有木有,效果也很理想,压缩了十几倍,图片的成像在肉眼下依旧如初
再来试试指定宽度按比例进行批量压缩
额,这个标题好像有点长诶,但实际上,要点就是两个:
按指定宽度自适应高度批量压缩
先来说说指定宽度,因为网站瀑布流展示图片的宽度必须为600,高度随意,比如一张图片6000x1540,指定宽度压缩过后就是600x154。所以这其实就是一道很简单的数学题,直接看到代码吧
newWidth = 600newHeight = round(newWidth / w * h)
再然后是批量压缩,python自带的os库有一个listdir函数,可以直接帮我们遍历目录下所有的文件名,我们只需要for进行循环处理就行了,下面直接放出整合的代码
import osfrom PIL import ImagedirPath = 'test/'allFile = os.listdir(dirPath)for i in allFile:file = dirPath + iimg = Image.open(file)w,h = img.sizenewWidth = 600newHeight = round(newWidth / w * h)img = img.resize((newWidth,newHeight), Image.ANTIALIAS)img.save('test2/%s' % i, optimize=True, quality=85)
多个文件压缩之后效果就更加明显了,压缩了整整25倍!
最后
好吧,这片文章写得还是比较急,是刚刚写出来的程序,然后火急火燎的就上了文章。
要说什么之后再完善文章基本是不阔能的,之前没写好的也再也没去改过…
有些地方可能讲的不是很仔细,若有不懂的地方,欢迎通过关于我文末的联系方式进行询问。
好了,还得抓紧继续摄影图片管理的剩余功能,此章毕!
本文作者: Messy
原文链接:https://www.messys.top/detail/70
版权声明: 本博客所有文章除特别声明外, 均采用 CC BY-NC-SA 4.0 许可协议. 转载请注明出处!