1. 程式人生 > >操作影象2-用pillow操作影象

操作影象2-用pillow操作影象

                        處理Image 資料型別
                        裁剪圖片

瞭解了pillow中顏色和座標的工作方式,就用pillow來處理影象

圖片:
這裡寫圖片描述

//這隻貓看上去太肥了, (對貓來說太笨重了)

將影象檔案zophie.png放在當前的工作目錄中,就可以講Zohie的影象載入到python中,像這樣:

圖片
這裡寫圖片描述

要載入影象, 就從pillow匯入Image模組,並呼叫Image.open(),傳入影象的檔名。然後,可以將載入的影象儲存在CatIm這樣的變數中。
Pillow的模組名稱是PIL ,這保持與老模組python Imaging Library向後相容,這就是為什麼必須from PIL import Image, 而不是from pillow import image 由於pillow的建立者設計pillow模組的方式,必須使用from PIL import Image 形式的import語句,而不是簡單的import pIL
如果影象不在當前工作目錄,就呼叫os.chdir()函式,將工作目錄變為包含影象檔案的資料夾。

圖片
這裡寫圖片描述

Image.open()函式的返回值是Image物件資料型別,它是pillow將影象表示為python值的方法。可以呼叫Image.open(),傳入檔名字串,從一個影象檔案(任何格式)載入一個image物件。通過save()方法,對image物件的所有更改都可以儲存到影象檔案中,(也是任何格式)。所有的旋轉、調整大小、裁剪、繪畫和其他影象操作,都通過這個image物件上的方法呼叫來完成。
    假定已經匯入了pillow的image模組,並將zophie的影象儲存在變數中。要確保zophie.png檔案在當前工作目錄中,讓image.open()

函式能找到它。否則,必須在Image.open()的字串引數中指定完整的絕對路徑。

處理Image資料型別
image 物件有一些有用的屬性,提供了載入的影象檔案的基本資訊:它的寬度,和高度、檔名和影象格式(如JPEG、GIF或PNG)
例如:

圖片
這裡寫圖片描述

    從zophie.png得到一個Image物件並儲存在catIm中後,可以看到該物件的size屬性是一個元組,包含該影象的寬度和高度的畫素數

可以將元組中的值賦給width和height變數,以便分別訪問寬度和高度。filename屬性描述了原始檔案的名稱。format和format_description屬性是字串,描述了原始檔案的影象格式。(format_description)比較詳細。
最後呼叫save()方法,傳入’zophie.jpg’,將新影象以檔名zophie.jpg儲存到目錄上。
pillow還提供了lmage.new()函式,它返回一個Image物件。這很像Image.open(),
不過Image.new()返回的物件表示空白的物件。Image.new()的引數如下:

*   字串'RGBA',將顏色模式設定為RGBA (還有其它模式)
*   大小,是倆個整數元組,作為新影象的寬度和高度。
*   影象開始採用的背景顏色,是一個表示RGBA值的四整數元組。可以用ImageColor.getcolor()函式的返回值作為這個引數,另外,Image.new()也支援傳入標準顏色名稱的字串。
            例如:

圖片
這裡寫圖片描述

圖片
這裡寫圖片描述

圖片
這裡寫圖片描述

這裡建立了一個Image物件,它有100畫素寬,200畫素高,帶有紫色背景。然後該影象存入檔案purpleImage.png中。
再次呼叫Image.new(),建立另一個Image物件,這次傳入(20,20)作為大小,沒有指定背景色。
如果未指定顏色引數,預設的顏色是不可見的黑色(0,0,0,0)因此第二個影象具有透明背景,將這個20*20的透明正方形存入transparentImage.png.

圖片
這裡寫圖片描述

圖片
這裡寫圖片描述

(新影象只有原始影象裁剪後的部分)

這得到一個新的Image物件,是剪裁後的影象,儲存在cropedim中,然後呼叫cropedim的save(),將裁剪後的 影象存入cropped.png.新檔案cropped.png從原始影象建立。