Python圖像處理庫PIL的ImageFont模塊使用介紹
ImageFont模塊定義了相同名稱的類,即ImageFont類。這個類的實例存儲bitmap字體,用于ImageDraw類的text()方法。
PIL使用自己的字體文件格式存儲bitmap字體。用戶可以使用pilfont工具包將BDF和PCF字體描述器(Xwindow字體格式)轉(zhuǎn)換為這種格式。
從版本1.1.4開始,PIL可以配置是否支持TrueType和OpenType字體(和FreeType庫支持其他的字體格式一樣)。對于更早的版本,只在imToolkit包中支持TrueType字體。
TrueType采用幾何學中二次B樣條曲線及直線來描述字體的外形輪廓,其特點是:TrueType既可以作打印字體,又可以用作屏幕顯示;由于它是由指令對字形進行描述,因此它與分辨率無關(guān),輸出時總是按照打印機的分辨率輸出。無論放大或縮小,字符總是光滑的,不會有鋸齒出現(xiàn)。但相對PostScript字體來說,其質(zhì)量要差一些。特別是在文字太小時,就表現(xiàn)得不是很清楚。
OpenType也叫Type 2字體,是由Microsoft和Adobe公司開發(fā)的另外一種字體格式。它也是一種輪廓字體,比TrueType更為強大,最明顯的一個好處就是可以在把PostScript字體嵌入到TrueType的軟件中。并且還支持多個平臺,支持很大的字符集,還有版權(quán)保護??梢哉f它是Type 1和TrueType的超集。OpenType的主要優(yōu)點:1)增強的跨平臺功能 2)更好的支持Unicode標準定義的國際字符集 3)支持高級印刷控制能力 4)生成的文件尺寸更小 5)支持在字符集中加入數(shù)字簽名,保證文件的集成功能。
OpenType標準還定義了OpenType文件名稱的后綴名。包含TureType字體的OpenType文件后綴名為.ttf,包含PostScript字體的文件后綴名為.OTF。如果是包含一系列TrueType字體的字體包文件,那么后綴名為.TTC。
一、ImageFont模塊的函數(shù)
1、 Load
定義:ImageFont.load(file)⇒ Font instance
含義:從指定的文件中加載一種字體,該函數(shù)返回對應的字體對象。如果該函數(shù)失敗,將產(chǎn)生IOError異常。
2、 Load_path
定義:ImageFont.load_path(file)⇒ Font instance
含義:和函數(shù)load()一樣,但是如果沒有指定當前路徑的話,會從sys.path開始查找指定的字體文件。
3、 Truetype
定義1:ImageFont.truetype(file,size)⇒ Font instance
含義1:加載一個TrueType或者OpenType字體文件,并且創(chuàng)建一個字體對象。這個函數(shù)從指定的文件加載了一個字體對象,并且為指定大小的字體創(chuàng)建了字體對象。
在windows系統(tǒng)中,如果指定的文件不存在,加載器會順便看看windows的字體目錄下是否存在。
這個函數(shù)需要_imagingft服務。
定義2:ImageFont.truetype(file,size, encoding=value)⇒ Font instance
含義2:(New in 1.1.5)加載一個TrueType或者OpenType字體文件,并且使用指定的編碼方式創(chuàng)建一個字體對象。通常的編碼方式有“unic”(Unicode),“symb”(Microsoft Symbol),“ADOB”(Adobe Standard),“ADBE”(Adobe Expert)和“armn”(Apple Roman)。
下面的例子使用MicrosoftSymbol字體,即變量encoding為“symb”,在oxF000和0xF0FF之間繪制一個字符。
font = ImageFont.truetype("symbol.ttf", 16, encoding="symb") draw.text((0, 0), unichr(0xF000 + 0xAA))
4、 Load_default
定義:ImageFont.load_default()⇒ Font instance
含義:(New in 1.1.4)加載一個默認的字體。
二、ImageFont模塊的方法
Font對象必須實現(xiàn)下面的方法,供ImageDraw層使用。
1、 Getsize
定義:font.getsize(text)⇒ (width, height)
含義:返回給定文本的寬度和高度,返回值為2元組。
2、 Getmask
定義:font.getmask(text,mode=”“)⇒ Image object
含義:為給定的文本返回一個位圖。這個位圖是PIL內(nèi)部存儲內(nèi)存的實例(為Image.core接口模塊定義)。
如果字體使用了抗鋸齒,位圖的模式為“L”,且其最大值為255。否則,它的模式為“1”。
(New in 1.1.5)可選參數(shù)mode用于一些顯卡驅(qū)動指定自己喜歡的模式;如果為空,渲染器可能會返回任意模式。注意:該模式總是一個字符串。
三、ImageFont模塊的實例
>>> from PIL import Image, ImageDraw, ImageFont >>> im02 = Image.open("D:\\Code\\Python\\test\\img\\test02.jpg") >>> draw = ImageDraw.Draw(im02) >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 20) >>> draw.text((30,30), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = 'red') >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 40) >>> draw.text((30,100), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = 'green') >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMYOU.TTF", 60) >>> draw.text((30,200), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = 'blue') >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\SIMLI.TTF", 40) >>> draw.text((30,300), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = 'red') >>> ft = ImageFont.truetype("C:\\WINDOWS\\Fonts\\STXINGKA.TTF", 40) >>> draw.text((30,400), u"Python圖像處理庫PIL從入門到精通",font = ft, fill = 'yellow') >>> im02.show()
在windows系統(tǒng)下,字體文件位于C:\Windows\Fonts文件夾下。本實例中用到的SIMYOU.TTF為幼圓字體文件,SIMLI.TTF為隸書字體文件,STXINGKA.TTF為行楷字體文件。用戶可以根據(jù)自己的需要,從Fonts文件夾下選擇所需字體文件。
字體的大小,可以根據(jù)定義字體時的第二個參數(shù)來設定。
本實例中圖像im02如下圖所示:
】
到此這篇關(guān)于Python圖像處理庫PIL的ImageFont模塊使用介紹的文章就介紹到這了,更多相關(guān)PIL ImageFont模塊內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實現(xiàn)從pdf文件中提取文本,并自動翻譯的方法
今天小編就為大家分享一篇python實現(xiàn)從pdf文件中提取文本,并自動翻譯的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-11-11- Python由荷蘭數(shù)學和計算機科學研究學會的Guido van Rossum 于1990 年代初設計,作為一門叫做ABC語言的替代品。 Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?/div> 2021-10-10
PyQt5 closeEvent關(guān)閉事件退出提示框原理解析
這篇文章主要介紹了PyQt5 closeEvent關(guān)閉事件退出提示框原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01詳解python string類型 bytes類型 bytearray類型
這篇文章主要介紹了python string類型 bytes類型 bytearray類型,需要的朋友可以參考下2017-12-12最新評論