PIL 學習筆記 3

2021-09-05 16:11:10 字數 2393 閱讀 4629

序列(image sequences,也叫動畫格式, animation formats)

pil 對序列有一些基礎的支援。支援 fli/flc, gip 和其他一些格式,tiff 檔案也可以包含多個幀。

import

image

im =

image.open(r

"c:/testimg/ani1.gif")

try:

while1:

im.seek(im.tell() +1

)#do something to im

print"x

"except

eoferror:

pass

用 iterator 類包裝後,我們可以用 for 語句來列舉每乙個幀:

class

imagesequence:

def__init__

(self, im):

self.im =im

def__getitem__

(self, ix):

try:

ifix:

self.im.seek(ix)

return

self.im

except

eoferror:

raise

indexerror

forframe 

inimagesequence(im):

print

"test"

postscript printing

import

image

import

psdraw

im =

image.open(

"lena.ppm")

title ="

lena

"box =(

1*72, 2*

72, 7*

72, 10*

72) 

#in points

ps =

psdraw.psdraw() 

#預設是 sys.stdout

ps.begin_document(title)

#draw the image (75 dpi)

ps.image(box, im, 75)

#draw centered title

ps.setfont(

"helveticanarrow-bold", 

36)w, h, b 

=ps.textsize(title)

ps.text((4*

72-w/

2, 1*

72-h), title)

ps.end_document()

前面說過一般用 image.open(檔名) 的方法開啟,其實不一定要傳遞檔名,也可以是乙個實現了 read, seek, tell 方法的物件。該物件將被以二進位制模式開啟。

import

stringio

im =

image.open(stringio.stringio(buffer))

注意,pil 庫在讀取頭資訊時,會重新回到檔案開頭(用 seek(0) 方法)。在讀取資料時(load()) 也是如此。如果檔案比較大,比如在 tar 檔案中,可以用 containerio 或 tario 模組來訪問它。

例子:從 tar 壓縮包中讀取:

import

tario

fp =

tario.tario(

"imaging.tar", 

"imaging/test/lena.ppm")

im =

image.open(fp)

控制解碼器

有些解碼器允許一邊從檔案中讀取,一邊操作。這通常用於在建立縮圖時加速解碼操作(速度比質量更重要),或者在向單色雷射印表機列印的時候(僅需要的灰度資訊)。

例子:用草稿(draft)模式讀取

im =image.open(file)

print

"original =

", im.mode, im.size

im.draft("l

", (

100,

100))

print

"draft =

", im.mode, im.size

這樣會輸出類似下面的結果:

origial 

=rgb (

512, 

512)

draft 

=l (

128, 

128)

注意,草稿模式開啟的結果不一定符合指定的模式和尺寸。如果要確保不大於指定尺寸,使用 thumbnail 方法。

python3無法安裝PIL

python3安裝pil的時候顯示無法找到相對應的版本 pil是python2的庫 pillow才能支援python3 關於pillow與pil pil python imaging library 是python乙個強大方便的影象處理庫,名氣也比較大。不過只支援到python 2.7。pillow...

cv2 PIL區別筆記

使用 scipy.misc.imread 讀取的資料是 rgb 格式 使用 cv2.imread 讀取的資料是 bgr 格式 使用 pil.image.open 讀取的資料是rgb格式 對於單通道的 可以看出image讀取就是預設的單通道,但是cv2會預設轉化圍為3通道,並且數值也變了。需要加上cv...

Python3安裝Pillow與PIL的方法

關於pillow與pil pil pytho程式設計客棧n imaging library 是python乙個強大方便的影象處理庫,名氣也比較大。不過只支援到python 2.7。pil官方 程式設計客棧pil pillow是pil的乙個派生分支,但如今已經發展成為比pil本身更具活力的影象處理庫。...