Python影象處理庫PIL的ImageGrab模組介紹
ImageGrab模組用於將當前螢幕的內容或者剪貼簿上的內容拷貝到PIL影象記憶體。
當前版本只支援windows系統。
一、ImageGrab模組的函式
1、 Grab
定義:ImageGrab.grab() ⇒ image
ImageGrab.grab(bbox) ⇒ image
含義:(New in 1.1.3)抓取當前螢幕的快照,返回一個模式為“RGB”的影象。引數邊界框用於限制只拷貝當前螢幕的一部分割槽域。
例子:
>>> from PIL importImage, ImageGrab >>> im =ImageGrab.grab() >>> im.size (1366, 768) >>> im.mode 'RGB' >>> im.show() >>> im0 =ImageGrab.grab((300, 100, 1400, 600)) >>> im0.show() >>> im0.size (1100, 500) >>> im0.mode 'RGB'
影象im是拷貝了整個螢幕的內容,其尺寸為1366x768,為我的顯示器當前解析度尺寸。影象im0拷貝了區域(300, 100, 1400, 600)中1100x500大小的螢幕內容。
影象im如下:
影象im0如下:
2、 Grabclipboard
定義:ImageGrab.grabclipboard() ⇒ image or list of strings or None
含義:(New in 1.1.4)抓取當前剪貼簿的快照,返回一個模式為“RGB”的影象或者檔名稱的列表。如果剪貼簿不包括影象資料,這個函式返回空。
使用者可以使用函式isinstance()
例子:
from PIL import Image, ImageGrab im = ImageGrab.grabclipboard() if isinstance(im, Image.Image): print "Image: size : %s, mode: %s" % (im.size, im.mode) im.save("D:\\Document\\mdoc\\python\\pic\\12\\grab_grabclipboard.jpg") elif im: for filename in im: try: print "filename: %s" % filename im = Image.open(filename) except IOError: pass #ignore this file else: print "ImageList: size : %s, mode: %s" % (im.size, im.mode) else: print "clipboard is empty."
通過實驗,發現在畫圖工具中開啟影象,選擇一部分然後剪貼,會返回一張模式為“RGB”的影象。如果在資料夾下剪貼影象檔案,則會返回“clipboard is empty.”,即這裡獲取的剪貼簿內容為空或者非影象內容。
本次測試的結果如下:
>>>================================ RESTART ================================
>>>
Image: size : (566, 335),mode: RGB
>>> im.size
(566, 335)
>>> im.mode
'RGB'
>>> im.show()
影象im如下:
二、Python中的isinstance函式
isinstance是Python中的一個內建函式
語法:
isinstance(object,classinfo)
如果引數object是classinfo的例項,或者object是classinfo類的子類的一個例項,返回True。如果object不是一個給定型別的物件,則返回結果總是False。
如果classinfo不表示一個類(型別物件), 那麼它要麼是一個類的元組, 或者遞迴地包含這樣的(由資料型別構成的)元組.其他的序列型別是不被允許的。
如果classinfo不是一種資料型別或者由資料型別構成的元組,將引發一個TypeError異常。
例子:
>>>isinstance(100, int)
True
>>>isinstance(10.5, int)
False
>>>isinstance(10.5, float)
True
>>>isinstance(10.5, int)
False
>>>isinstance(10.5, (int,float))
True