1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 7行代码实现图片等比例压缩(python)

7行代码实现图片等比例压缩(python)

时间:2019-07-15 20:31:46

相关推荐

7行代码实现图片等比例压缩(python)

日常前言

最近准备写一个摄影图片的发布功能,之前图方便就直接使用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 许可协议. 转载请注明出处!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。