Linux上安裝Python的PIL和Pillow庫處理圖片的執行個體教程

來源:互聯網
上載者:User
安裝
正常情況,只需

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() 
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.