Linux上安裝Python的PIL和Pillow庫(kù)處理圖片的實(shí)例教程
安裝
正常情況,只需
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為例。
依賴庫(kù)(library)安裝
首先檢查是否已經(jīng)安裝
?/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.la
lrwxrwxrwx 1 root root ? 17 Mar 21 16:19 /usr/lib/libjpeg.so -> libjpeg.so.62.0.0
lrwxrwxrwx 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
如果沒(méi)有,則需要安裝包
Debian系:
apt-get install libjpeg8-dev for jpg
apt-get install zlib1g-dev for png
apt-get install libwebp-dev for webp
RedHat系:
yum install libjpeg-devel libpng-devel libwebp-devel
安裝完成后,還需要手動(dòng)建立軟鏈接
DEBIAN 7 & Ubuntu14.04:
ln -s /usr/lib/x86_64-linux-gnu/libjpeg.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libfreetype.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libz.so /usr/lib
ln -s /usr/lib/x86_64-linux-gnu/libwebp.so /usr/lib
Centos 6.5:
ls -s /usr/lib64/libjpeg.so /usr/lib
ls -s /usr/lib64/libz.so /usr/lib
ls -s /usr/lib64/libwebp.so /usr/lib
重新安裝
以上就緒后,兩種辦法重新安裝:
pip install -I PIL==1.1.7
-I意思是Force reinstall。安裝完成時(shí)留意輸出對(duì)格式的支持。
或者下載源碼重裝一次,以PIL為例
wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz
tar -xzvf Imaging-1.1.7.tar.gz
cd Imaging-1.1.7
python setup.py install
對(duì)格式的支持可在源碼目錄下
python selftest.py
* TKINTER support not installed
—- JPEG support ok
—- ZLIB (PNG/ZIP) support ok
如果這里有問(wèn)題(Debian & Ubuntu沒(méi)有,但Centos 6.5有), 需要 python setup.py build_ext -i 然后重試。
批量轉(zhuǎn)換圖片實(shí)現(xiàn)
需求是這樣的,由于現(xiàn)在相機(jī)像素都很高,拍出來(lái)的照片很大,上傳到網(wǎng)上相冊(cè)太慢,于是要先轉(zhuǎn)下大小,之前都是直接在網(wǎng)上搜圖片處理的軟件,后來(lái)想了一下,既然會(huì)編程,這種需求完全可以自己動(dòng)手搞。
Python的圖片處理爽歪歪,幾行代碼搞定,這里用的是pillow庫(kù)。
下面上代碼。
#coding=utf-8
from PIL import Image#需要pillow庫(kù)
import glob, os
in_dir ='tmp_photo'#源圖片目錄
out_dir = in_dir+'_out'#轉(zhuǎn)換后圖片目錄
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()
遇到問(wèn)題:運(yùn)行代碼提示IO錯(cuò)誤,IOError: decoder jpeg not available
直接卸載重裝,重裝是,不帶版本號(hào),默認(rèn)下載最新版本,版本號(hào)為4.3.0
安裝一些支持包:
sudo apt-get install libjpeg8-dev
sudo apt-get install libpng12-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libwebp-dev
sudo apt-get install libtiff5-dev
sudo apt-get install libopenjpeg-dev
sudo apt-get install libzip-dev