PIL(Python Imaging Library)-用Python畫圖

最近工作中需要用到圖片的自動化處理,于是了解了一下PIL程序庫新荤。

什么是PIL

PIL(Python Imaging Library)是python中處理圖像常用的一個庫揽趾,常見的用法包括可以操作二維像素點、線苛骨、文字以及對現(xiàn)有圖片的縮放篱瞎、變形、通道處理智袭,也可以轉換圖片的編碼格式奔缠,可以比較兩幅圖片的不同。

安裝

python中安裝庫一般通過pip或者easy_install吼野,如果這兩者不可行,一般在搜索引擎找到官網(wǎng)或者github項目地址两波,進入主目錄執(zhí)行python setup.py install瞳步。PIL安裝方式亦如上所述闷哆。

使用場景

基本操作:打開,打印文件屬性和展示圖片

>>> import Image
>>> im = Image.open("lena.ppm")
>>> print im.format, im.size, im.mode
PPM (512, 512) RGB

>>> im.show()

其中format包括jpg,png,gif,bmp等
size很好理解单起,返回的是一個二元組代表寬高
mode代表的是色彩模式抱怔,除了RGB,共支持如下模式

  • 1 (1-bit pixels, black and white, stored with one pixel per byte)
  • L (8-bit pixels, black and white)
  • P (8-bit pixels, mapped to any other mode using a colour palette)
  • RGB (3x8-bit pixels, true colour)
  • RGBA (4x8-bit pixels, true colour with transparency mask)
  • CMYK (4x8-bit pixels, colour separation)
  • YCbCr (3x8-bit pixels, colour video format)
  • I (32-bit signed integer pixels)
  • F (32-bit floating point pixels)
圖片縮放:
size = (128, 128)

im = Image.open(infile)
im.thumbnail(size)

經(jīng)過測試嘀倒,縮放是會保留原始長寬比的屈留,縮放操作其實意味著在保留長寬比的前提下,縮放后結果的高不大于128,寬也不大于128.

縮放時還有一個filter參數(shù)测蘑,可以控制圖片的質量灌危,壓縮時PIL處理過程中稱為resampling的過程,可以采用以下filter:

- NEAREST
Pick the nearest pixel from the input image. Ignore all other input pixels.
直接采用該像素點最近的像素點的色彩值

- BILINEAR
Use linear interpolation over a 2x2 environment in the input image. Note that in the current version of PIL, this filter uses a fixed input environment when downsampling.
類似第一種碳胳,只不過擴大了采樣的范圍并作平均勇蝙。是2*2的范圍

- BICUBIC
Use cubic interpolation over a 4x4 environment in the input image. Note that in the current version of PIL, this filter uses a fixed input environment when downsampling.
進一步擴大到了4*4的范圍

- ANTIALIAS
(New in PIL 1.1.3). Calculate the output pixel value using a high-quality resampling filter (a truncated sinc) on all pixels that may contribute to the output value. In the current version of PIL, this filter can only be used with the resize and thumbnail methods.
看不太懂,反正這個是推薦的挨约,官方認為只要不是對速度有非常大的要求味混,都要采用這個filter。

通過實際操作诫惭,確實發(fā)現(xiàn)第四種明顯減少了鋸齒翁锡,而第一種nearest鋸齒最為嚴重

對比ANTIALIAS vs NEAREST
圖片轉換:
im = Image.open(“a.png")
im.save(“a.jpg”)

PIL默認會讀取后綴名來應該用何種編碼來轉換這張圖片。

圖片粘貼:
width = 850
height = 510
im = Image.open(“for_paste.jpg")
image = Image.new('RGB', (width, height), (255, 255, 255))
box = (250,42,550,325)

image.paste(im,box)

代碼首先新建了一個image對象夕土,作為我們的畫布馆衔,然后將for_paster.jpg粘貼到畫面中的區(qū)域。box是一個四元組隘弊,含義為(左上角x哈踱,左上角y,右下角x梨熙,右下角y)开镣。這里如果box的寬和高與被粘貼圖片的寬高不一致,系統(tǒng)會拋異常咽扇。

圖片中寫字:
#創(chuàng)建一個字體實例邪财,采用微軟雅黑38號
font_en = ImageFont.truetype('/Library/Fonts/Microsoft/Microsoft Yahei.ttf',38)
draw = ImageDraw.Draw(image)

#指定字體和顏色(RGB)
draw.text( (0,100), u’He acknowledged his faults.', font=font_en,fill=(0,0,0))
del draw

結果如下:

Python畫圖
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末质欲,一起剝皮案震驚了整個濱河市树埠,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嘶伟,老刑警劉巖怎憋,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡绊袋,警方通過查閱死者的電腦和手機毕匀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來癌别,“玉大人皂岔,你說我怎么就攤上這事≌菇悖” “怎么了躁垛?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長圾笨。 經(jīng)常有香客問我教馆,道長,這世上最難降的妖魔是什么墅拭? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任活玲,我火速辦了婚禮,結果婚禮上谍婉,老公的妹妹穿的比我還像新娘舒憾。我一直安慰自己,他們只是感情好穗熬,可當我...
    茶點故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布镀迂。 她就那樣靜靜地躺著,像睡著了一般唤蔗。 火紅的嫁衣襯著肌膚如雪探遵。 梳的紋絲不亂的頭發(fā)上妓柜,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天,我揣著相機與錄音棍掐,去河邊找鬼。 笑死作煌,一個胖子當著我的面吹牛掘殴,可吹牛的內容都是我干的。 我是一名探鬼主播粟誓,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鹰服!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤仍源,失蹤者是張志新(化名)和其女友劉穎心褐,沒想到半個月后舔涎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體笼踩,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡亡嫌,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了挟冠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肋僧,死狀恐怖,靈堂內的尸體忽然破棺而出嫌吠,到底是詐尸還是另有隱情,我是刑警寧澤掺炭,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布涧狮,位于F島的核電站炕矮,受9級特大地震影響者冤,放射性物質發(fā)生泄漏。R本人自食惡果不足惜涉枫,卻給世界環(huán)境...
    茶點故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望殊鞭。 院中可真熱鬧,春花似錦操灿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽救鲤。三九已至,卻和暖如春本缠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稀颁。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工楣黍, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留匾灶,地道東北人租漂。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像哩治,于是被迫代替她去往敵國和親秃踩。 傳聞我的和親對象是個殘疾皇子锚扎,可洞房花燭夜當晚...
    茶點故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內容