最近准备写一个摄影图片的发布功能,之前图方便就直接使用js获取图片了( https://www.messys.top/photos/ ) ,现在为了更加方便的使用该功能,当然是要加入后台管理的呀,所以便开了此篇。
from PIL import Image
file = '1.jpg'
img = Image.open(file)
w,h = img.size
w,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 = 600
newHeight = round(newWidth / w * h)
再然后是批量压缩,python自带的os库有一个listdir函数,可以直接帮我们遍历目录下所有的文件名,我们只需要for进行循环处理就行了,下面直接放出整合的代码
import os
from PIL import Image
dirPath = 'test/'
allFile = os.listdir(dirPath)
for i in allFile:
file = dirPath + i
img = Image.open(file)
w,h = img.size
newWidth = 600
newHeight = 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 许可协议. 转载请注明出处!