[练习] 用PYTHON来优化网站中的图片
生活随笔
收集整理的這篇文章主要介紹了
[练习] 用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)
i?=?string.count(usr_name)
r?=?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> ")
name????????=?usr_string[name_s??:?name_e?]
small_s?????=?usr_string.find('<small>')
small_e?????=?usr_string.find('. ')
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的文檔,沒找到如何使用正則的方法,如果哪位大大很明白,請回復一下啊,謝謝。
?
總結
以上是生活随笔為你收集整理的[练习] 用PYTHON来优化网站中的图片的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 最简单EXT调用WCF
- 下一篇: 2009-08 台湾印象