[练习] 用PYTHON来优化网站中的图片

我到公司以来,第一次加班,哇,加一晚上加一上午,现在还没下班的迹象,555,困。

 

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

 

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

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

 

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

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

 

代码如下:

 

 


#!/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'

 

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

 

为了感谢来这里看我发这么烂的帖子的人,我“郑重”推出我自恋的最“雷人工具”----查看博客园排名的脚本 —_—!

 

#!/usr/bin/python
#
-*-coding:utf-8-*-
#
Filenam: get_cnblogs.py
#
Author zhangyufeng_zz
import os
import sys
import re
from urllib import urlopen
string 
= urlopen("http://www.cnblogs.com/AllBloggers.aspx").read()

#file_object = open('string.txt')
#
--------------------------------------------------
#
 try:
#
   string = file_object.read()
#
 finally:
#
   file_object.close()
#
-------------------------------------------------- 


usr_name    
= 'amboyna'
url         
= "http://www.cnblogs.com"

usr_length 
= len(usr_name)
= string.count(usr_name)
= string.find(usr_name)
usr_string  
= string[r - 60 : r + 50]

name_s      
= usr_string.find(usr_name + "/\">") + len(usr_name) + 3
name_e      = usr_string.find("</a>&nbsp;")
name        
= usr_string[name_s  : name_e ]

small_s     
= usr_string.find('<small>')
small_e     
= usr_string.find('.&nbsp;')
no 
= usr_string[small_s + 7 : small_e]

http_s      
= usr_string.find(url)
http        
= usr_string[ http_s : http_s + len(url) + usr_length + 1 ]

print '\n'
print '----------------------------------'
print 'ID:\t' , usr_name
print 'NAME:\t' , name
print 'NO.:\t' , no
print 'URL:\t' , http
print '----------------------------------\n'
                                                                                 

 

把usr_name 改成你的用户名就成,附:我不是不会正则,我看了半晌python的文档,没找到如何使用正则的方法,如果哪位大大很明白,请回复一下啊,谢谢。

 

posted @ 2009-08-22 09:11  玉米疯收  阅读(1066)  评论(3编辑  收藏  举报