安裝
正常情況,只需
pip install PIL==1.1.7
或者
pip install Pillow==2.9.0
即可。但需留意安裝后的輸出
安裝完成后,需留意輸出:
*** TKINTER support not available*** JPEG support not available*** WEBP support not available*** ZLIB (PNG/ZIP) support not available*** FREETYPE2 support not available*** LITTLECMS support not available
是否有需要但不支持的格式,如果有,需安裝支持的包。以jpg/png/web為例。
依賴庫(library)安裝
首先檢查是否已經安裝
ll /usr/lib/libjpeg.*-rw-r--r-- 1 root root 221942 Jun 30 2010 /usr/lib/libjpeg.a-rw-r--r-- 1 root root 918 Jun 30 2010 /usr/lib/libjpeg.lalrwxrwxrwx 1 root root 17 Mar 21 16:19 /usr/lib/libjpeg.so -> libjpeg.so.62.0.0lrwxrwxrwx 1 root root 17 Jan 10 10:44 /usr/lib/libjpeg.so.62 -> libjpeg.so.62.0.0-rw-r--r-- 1 root root 145048 Jun 30 2010 /usr/lib/libjpeg.so.62.0.0
如果沒有,則需要安裝包
Debian系:
apt-get install libjpeg8-dev for jpgapt-get install zlib1g-dev for pngapt-get install libwebp-dev for webp
RedHat系:
yum install libjpeg-devel libpng-devel libwebp-devel
安裝完成后,還需要手動建立軟鏈接
DEBIAN 7 & Ubuntu14.04:
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/libln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/libln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/libln -s /usr/lib/x86_64-linux-gnu/libwebp.so /usr/lib
Centos 6.5:
ls -s /usr/lib64/libjpeg.so /usr/libls -s /usr/lib64/libz.so /usr/libls -s /usr/lib64/libwebp.so /usr/lib
重新安裝
以上就緒后,兩種辦法重新安裝:
pip install -I PIL==1.1.7
-I意思是Force reinstall。安裝完成時留意輸出對格式的支持。
或者下載源碼重裝一次,以PIL為例
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gztar -xzvf Imaging-1.1.7.tar.gzcd Imaging-1.1.7python setup.py install
對格式的支持可在源碼目錄下
python selftest.py* TKINTER support not installed―- JPEG support ok―- ZLIB (PNG/ZIP) support ok
如果這里有問題(Debian & Ubuntu沒有,但Centos 6.5有), 需要 python setup.py build_ext -i 然后重試。
批量轉換圖片實現
需求是這樣的,由于現在相機像素都很高,拍出來的照片很大,上傳到網上相冊太慢,于是要先轉下大小,之前都是直接在網上搜圖片處理的軟件,后來想了一下,既然會編程,這種需求完全可以自己動手搞。
Python的圖片處理爽歪歪,幾行代碼搞定,這里用的是pillow庫。
下面上代碼。
#coding=utf-8 from PIL import Image#需要pillow庫 import glob, os in_dir ='tmp_photo'#源圖片目錄 out_dir = in_dir+'_out'#轉換后圖片目錄 percent = 0.4#縮放比例 if not os.path.exists(out_dir): os.mkdir(out_dir) #圖片批處理 def main(): for files in glob.glob(in_dir+'/*'): filepath,filename = os.path.split(files) im = Image.open(files) w,h = im.size im = im.resize((int(w*percent), int(h*percent))) im.save(os.path.join(out_dir,filename)) if __name__=='__main__': main()
新聞熱點
疑難解答
圖片精選