Python優(yōu)化圖片實際操作技巧淺析
在一個網(wǎng)站中,會有很多圖片來支持這個頁面獲得更好的用戶體驗。那么如何應(yīng)用更好的方法來優(yōu)化這些圖片,獲得更好的效果呢?今天我們就會為大家介紹一下Python優(yōu)化圖片的相關(guān)方法,以方便大家應(yīng)用。#t#
對于網(wǎng)站中的一些關(guān)鍵的頁面,多重緩存、靜態(tài)化、程序代碼優(yōu)化……之外,為了提高用戶打開頁面的速度,圖片是必須要優(yōu)化的。
如何優(yōu)化呢,其實手工優(yōu)化也絕對是值得的,也是最好的方法,但是我寫了一個小腳本,與其說這個腳本的作用是優(yōu)化圖片,
不如說是給出一個參考,就是經(jīng)過圖片優(yōu)化,可以減少網(wǎng)頁多大的體積。
那腳本是如何工作呢,原理簡單,大致是找到所有要優(yōu)化的文件,用Pil庫另存到本目錄下的bak文件夾中,這個文件夾要自己先建好哦。
然后統(tǒng)計文件大小,給出結(jié)果,所以說這個腳本是“安全”的。任你運行多次,不會真正會改圖片,只會把同名文件生成到相應(yīng)的bak文件中。
Python優(yōu)化圖片代碼如下:
- #!/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優(yōu)化圖片代碼很簡單,而且只是利用了pil的默認(rèn)圖片質(zhì)量,關(guān)于圖片的質(zhì)量,我還沒找到調(diào)整的方法。
- #!/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 改成你的用戶名就成。以上就是我們?yōu)榇蠹以敿毥榻B的有關(guān)Python優(yōu)化圖片的方法。