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

日常前言

最近准备写一个摄影图片的发布功能,之前图方便就直接使用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效果最好

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

炒鸡简单有木有,效果也很理想,压缩了十几倍,图片的成像在肉眼下依旧如初

再来试试指定宽度按比例进行批量压缩

额,这个标题好像有点长诶,但实际上,要点就是两个:

  • 按指定宽度自适应高度
  • 批量压缩

先来说说指定宽度,因为网站瀑布流展示图片的宽度必须为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)

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

多个文件压缩之后效果就更加明显了,压缩了整整25倍!

最后

好吧,这片文章写得还是比较急,是刚刚写出来的程序,然后火急火燎的就上了文章。
要说什么之后再完善文章基本是不阔能的,之前没写好的也再也没去改过…
7行代码实现图片等比例压缩(python)_第3张图片

有些地方可能讲的不是很仔细,若有不懂的地方,欢迎通过关于我文末的联系方式进行询问。

好了,还得抓紧继续摄影图片管理的剩余功能,此章毕!

本文作者: Messy
原文链接:https://www.messys.top/detail/70
版权声明: 本博客所有文章除特别声明外, 均采用 CC BY-NC-SA 4.0 许可协议. 转载请注明出处!

你可能感兴趣的:(python,Django)