Python优化图片实际操作技巧浅析

honghao0 2010-03-05

在一个网站中,会有很多图片来支持这个页面获得更好的用户体验。那么如何应用更好的方法来优化这些图片,获得更好的效果呢?今天我们就会为大家介绍一下Python优化图片的相关方法,以方便大家应用。

对于网站中的一些关键的页面,多重缓存、静态化、程序代码优化……之外,为了提高用户打开页面的速度,图片是必须要优化的。

如何优化呢,其实手工优化也绝对是值得的,也是最好的方法,但是我写了一个小脚本,与其说这个脚本的作用是优化图片,

不如说是给出一个参考,就是经过图片优化,可以减少网页多大的体积。

那脚本是如何工作呢,原理简单,大致是找到所有要优化的文件,用Pil库另存到本目录下的bak文件夹中,这个文件夹要自己先建好哦。

然后统计文件大小,给出结果,所以说这个脚本是“安全”的。任你运行多次,不会真正会改图片,只会把同名文件生成到相应的bak文件中。

Python优化图片代码如下:

#!/usr/bin/python  


#-*-coding:utf-8-*-  


#Filenam: pic_smaller.py  


#Author zhangyufeng_zz  


import os, sys  


import Image  



error_log = ['']  




size_count = 0 



def get_new_one(pic):  


global error_log  


try:  



im = Image.open(pic)  



print pic, im.format, im.size, im.mode  


# im.show()   



if(im.format == 'JPEG'):  



im.save("bak/" + pic)  


finally:  


error_log.append(pic)  


def get_file_size_string(file1 , file2):  


global error_log, size_count   


if(not os.path.isfile(file1)) or (not os.path.isfile(file2)):  


return 0  


try:  



f1 = os.path.getsize(file1)  




f2 = os.path.getsize(file2)  



size_count += f1 - f2  



f = '%s \t-> \t%s\t%dKB*%dKB \t\t = \t %d KB'%(file1, 
file2, f1/1024, f2/1024, (f1-f2)/1024)  



print f  


finally:  


error_log.append('no')  


# main  



all = os.listdir('.')  




pics = []  




formats = ['jpg', 'png', 'JPG' , 'PNG']  



for file in os.listdir('.'):  


if os.path.isfile(file):  


for fr in formats:  



if file.find(fr) > 0:  



pics.append(file)  


for pic in pics:  


get_new_one(pic)  


get_file_size_string(pic , 'bak/' + pic)  


print size_count/1024 , 'KB' 

Python优化图片代码很简单,而且只是利用了pil的默认图片质量,关于图片的质量,我还没找到调整的方法。

相关推荐