|
iffilesize>=threshold:
print(filename)
withImage.open(filename)asim:
width,height=im.size
ifwidth>=height:
new_width=int(math.sqrt(threshold/2))
new_height=int(new_width*height*1.0/width)
else:
new_height=int(math.sqrt(threshold/2))
new_width=int(new_height*width*1.0/height)
resized_im=im.resize((new_width,new_height))
output_filename=filename.replace(source_dir,target_dir)
resized_im.save(output_filename)
这样,将来无论你的图片目录在哪里,你要满足哪个写作平台的图片大小要求,都可以通过简单设置这样几个数值,调用函数来完成新需求。
我们尝试用原先的参数取值,执行一次。
执行之前,我们删除掉output目录,以测试功能。
然后执行模块化之后的函数。
resize_images(source_dir,target_dir,threshold)
执行时,依然只是输出需要压缩的文件路径。
image/cat.png
检查刚刚又重新生成的output目录,猫咪照片呢?
没问题。不仅显示正常,而且大小也已经正常压缩。
小结
总结一下,通过本文我们接触到了以下知识点:
如何利用glob软件包遍历指定目录,获得符合条件的全部文件路径列表;
如何用PIL图像处理工具读取图像文件,检查宽度、高度,重新设定图像大小,并且存储新生成的图像;
如何用os函数库检查文件或目录是否存在,创建目录,以及获取文件尺寸。
更重要的,是我们尝试了如何用Python这一脚本语言,帮我们智能化做出判断,并且在后台完成琐碎的重复操作。
另外,你应该已经了解了,完成功能并不意味着完事大吉。为了让自己的代码可以充分重用、易于共享并提高效能,你需要梳理与整合代码,将其充分模块化,只曝露输入输出接口给用户(包括将来的自己),避免固定取值设置。
5/5 首页 上一页 3 4 5 |