十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)使用python怎么生成帶有表格的圖片,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
例如:
直接在html中寫一個table標(biāo)簽,然后單獨(dú)把表格部分保存成圖片
或者是直接將excel中的內(nèi)容保存成一個圖片
剛開始的思路,是直接生成一個帶有table標(biāo)簽的html文件,然后將這個文件轉(zhuǎn)成圖片,經(jīng)過查找資料發(fā)現(xiàn)需要安裝webkit2png,而這個庫又依賴其他的東西,遂放棄。
當(dāng)初的目標(biāo)是直接生成一個圖片,并且是只需要安裝python依賴庫就行,而不需要在系統(tǒng)層面安裝相應(yīng)的依賴包
后來考慮使用Python的圖片處理庫Pillow,和生成表格式的庫prattytable,下面的圖片是最終生成的圖片效果
總體來說是分為兩個步驟:
使用prattytable將要展示的數(shù)據(jù)生成一個表格字符串
使用pillow,將生成的表格字符串寫入到圖片中
下面是具體實(shí)現(xiàn):
from prettytable import PrettyTable from PIL import Image, ImageDraw, ImageFont tab = PrettyTable() # 設(shè)置表頭 tab.field_names = ["Name", "Age","Country","City"] # 表格內(nèi)容插入 tab.add_row(['chal','23','中國','Shanghai']) tab.add_row(['charle','29','China','Xuzhou']) tab.add_row(['jack','32','United States','Washington']) tab_info = str(tab) space = 5 # PIL模塊中,確定寫入到圖片中的文本字體 font = ImageFont.truetype('/home/doge/YaHeiConsolas.ttf', 15, encoding='utf-8') # Image模塊創(chuàng)建一個圖片對象 im = Image.new('RGB',(10, 10),(0,0,0,0)) # ImageDraw向圖片中進(jìn)行操作,寫入文字或者插入線條都可以 draw = ImageDraw.Draw(im, "RGB") # 根據(jù)插入圖片中的文字內(nèi)容和字體信息,來確定圖片的最終大小 img_size = draw.multiline_textsize(tab_info, font=font) # 圖片初始化的大小為10-10,現(xiàn)在根據(jù)圖片內(nèi)容要重新設(shè)置圖片的大小 im_new = im.resize((img_size[0]+space*2, img_size[1]+space*2)) del draw del im draw = ImageDraw.Draw(im_new, 'RGB') # 批量寫入到圖片中,這里的multiline_text會自動識別換行符 # python2 draw.multiline_text((space,space), unicode(tab_info, 'utf-8'), fill=(255,255,255), font=font) # python3 # draw.multiline_text((space,space), tab_info, fill=(255,255,255), font=font) im_new.save('12345.PNG', "PNG") del draw
上述就是小編為大家分享的使用python怎么生成帶有表格的圖片了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。