精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

數學公式轉圖片:純Python實現,可設置字體、字號、顏色和分辨率

開發 后端
寫數學公式,功能最強大的當然是LaTex了。不過,強大不代表易用,駕馭LaTex絕不是一件容易的事兒。這也不難理解:畢竟數學公式不是孤立存在的,必然要作為文檔、網頁或者程序輸出的元素,如何無縫地讓LaTex關聯到文檔、網頁或程序,的確是個棘手的難題。

[[407455]]

寫數學公式,功能最強大的當然是LaTex了。不過,強大不代表易用,駕馭LaTex絕不是一件容易的事兒。這也不難理解:畢竟數學公式不是孤立存在的,必然要作為文檔、網頁或者程序輸出的元素,如何無縫地讓LaTex關聯到文檔、網頁或程序,的確是個棘手的難題。

既然直接使用LaTex有難度,那就退而求其次:借助于工具將數學公式轉為圖片,然后就可以方便地應用到文檔、網頁或者程序中了。這樣的工具,除了在線式的,基本上都是重量級的,安裝和使用極不方便。我曾經花了11個C幣從CSDN買過一個數學公式轉圖片的工具,下載之后發現,竟然只是封裝了一個http請求,圖片仍然是在線生成的!一氣之下,自己寫了個離線的,只是功能比較簡單,不能方便地設置輸出圖像的大小和顏色。

最近工作中又用到了LaTex,幾經嘗試,終于在matplotlib源碼中發現了一個處理LaTex數學公式的好東西。稍加改造,增加了字體、字號、顏色和分辨率的設置,最終完美解決了LaTex數學公式轉圖片的問題。

1. 核心代碼

先從最簡單的開始吧。matplotlib有個mathtext子模塊,提供了math_to_image函數可以直接將LaTex數學公式生成圖片。下面的代碼,僅僅兩行,就將質能方程轉成了圖片。請注意,LaTex數學公式一定要包含在兩個$符號之間。

  1. >>> from matplotlib import mathtext 
  2. >>> mathtext.math_to_image(r'$E=mc^2$', r'd:\demo_1.png'

生成的圖片寬度55個像素,高度15個像素,分辨率為100dpi。這么迷你,看上去可憐巴巴的。

雖然指定了png格式,也確實存在透明通道,其背景卻是不透明的。除了png格式外,math_to_image函數還支持eps, pdf, pgf, png, ps, raw, rgba, svg, svgz等格式,但不支持jpg格式。

2. 設置字體、字號、分辨率

要設置字體字號,就得先導入matplotlib的font_manager字體管理模塊。該模塊的FontProperties類可以實例化一個字體對象傳給math_to_image函數,用來設置family(字體)、size(字號)和weight(筆畫輕重)等。

math_to_image函數的dpi參數用于設置分辨率(每英寸像素數)。如果應用于網頁的話,建議分辨率設置為72dpi就可以了,如果用于印刷,請將dpi設置為300。

  1. >>> import matplotlib.font_manager as mfm 
  2. >>> prop = mfm.FontProperties(family='sans-serif'size=64, weight='normal'
  3. >>> mathtext.math_to_image(r'$E=mc^2$', r'd:\demo_2.png', prop=prop, dpi=72) 

輸出結果如下。這次生成的圖片終于不那么可憐了,寬度250個像素,高度59個像素。

如果不知道有哪些字體可用怎么辦?不要擔心,下面這一行代碼就可以列出當前系統中全部的可用字體。在我的電腦上運行之后,找到了幾百種可用的字體(重名的字體表示該字體有多個字體文件)。

  1. >>> [item.name for item in mfm.fontManager.ttflist] 

3. 設置顏色

要想對圖片文件做顏色處理,最好的方式是先將math_to_image的輸出暫存到類文件對象中,借助于PIL和NumPy完成顏色設置后,再保存為文件。為此,要先導入io模塊、pillow模塊和numpy模塊。

在開始寫代碼前,先約定使用浮點型的三元組表示顏色,比如,(0.17, 0.63, 0.17)表示亮度稍暗的綠色。如果喜歡使用其他方式表示顏色,請自行轉換。下面的例子換了一個復雜的數學公式(虛構的,并無實際意義)來演示如何設置顏色。

  1. >>> from io import BytesIO 
  2. >>> from PIL import Image 
  3. >>> import numpy as np 
  4. >>> text = r'$s(t) = \mathcal{A}\mathrm{sin}(2 \omega \sum_{i=0}^\infty t_i)$' 
  5. >>> color = (0.17, 0.63, 0.17) # 要使用的顏色 
  6. >>> bfo = BytesIO() # 創建二進制的類文件對象 
  7. >>> prop = mfm.FontProperties(family='Palatino Linotype'size=256, weight='normal'
  8. >>> mathtext.math_to_image(text, bfo, prop=prop, dpi=72) 
  9. 209.0 
  10. >>> im = Image.open(bfo) # 打開二進制的類文件對象,返回一個PIL圖像對象 
  11. >>> r, g, b, a = im.split() # 分離出RGBA四個通道 
  12. >>> r, g, b = 255-np.array(r), 255-np.array(g), 255-np.array(b) # RGB通道反白 
  13. >>> a = r/3 + g/3 + b/3 # 生成新的alpha通道 
  14. >>> r, g, b = r*color[0], g*color[1], b*color[2] # RGB通道設置為目標顏色 
  15. >>> im = np.dstack((r,g,b,a)).astype(np.uint8) # RGBA四個通道合并為三維的numpy數組 
  16. >>> im = Image.fromarray(im) # numpy數組轉PIL圖像對象 
  17. >>> im.save(r'd:\demo_3.png') # PIL圖像對象保存為文件 

來看看最終的輸出結果是什么樣的呢?最終生成了2451x653的一張大圖,公式內容、字體、字號、顏色等,正如期望的那樣。大功告成!

4. 封裝成函數

為了方便使用,將上面的代碼封裝成一個函數,完整代碼如下。

 

  1. # -*- coding: utf-8 -*- 
  2.  
  3. import os 
  4. from io import BytesIO 
  5. from PIL import Image 
  6. import numpy as np 
  7. import matplotlib.font_manager as mfm 
  8. from matplotlib import mathtext 
  9.  
  10. def latex2img(text, size=32, color=(0.1,0.1,0.1), out=None, **kwds): 
  11.     """LaTex數學公式轉圖片 
  12.  
  13.         text        - 文本字符串,其中數學公式須包含在兩個$符號之間 
  14.         size        - 字號,整型,默認32 
  15.         color       - 顏色,浮點型三元組,值域范圍[0,1],默認深黑色 
  16.         out         - 文件名,僅支持后綴名為.png的文件名。若為None,則返回PIL圖像對象 
  17.         kwds        - 關鍵字參數 
  18.                         dpi         - 輸出分辨率(每英寸像素數),默認72 
  19.                         family      - 系統支持的字體,None表示當前默認的字體 
  20.                         weight      - 筆畫輕重,可選項包括:normal(默認)、light和bold 
  21.         ""
  22.  
  23.     assert out is None or os.path.splitext(out)[1].lower() == '.png''僅支持后綴名為.png的文件名' 
  24.  
  25.     for key in kwds: 
  26.         if key not in ['dpi''family''weight']: 
  27.             raise KeyError('不支持的關鍵字參數:%s'%key
  28.  
  29.     dpi = kwds.get('dpi', 72) 
  30.     family = kwds.get('family', None) 
  31.     weight = kwds.get('weight''normal'
  32.  
  33.     bfo = BytesIO() # 創建二進制的類文件對象 
  34.     prop = mfm.FontProperties(family=family, size=size, weight=weight) 
  35.     mathtext.math_to_image(text, bfo, prop=prop, dpi=dpi) 
  36.     im = Image.open(bfo) 
  37.  
  38.     r, g, b, a = im.split() 
  39.     r, g, b = 255-np.array(r), 255-np.array(g), 255-np.array(b) 
  40.     a = r/3 + g/3 + b/3 
  41.     r, g, b = r*color[0], g*color[1], b*color[2] 
  42.  
  43.     im = np.dstack((r,g,b,a)).astype(np.uint8) 
  44.     im = Image.fromarray(im) 
  45.  
  46.     if out is None: 
  47.         return im 
  48.     else
  49.         im.save(out
  50.         print('生成的圖片已保存為%s'%out
  51.  
  52. if __name__  == '__main__'
  53.     text = r'$\sum_{i=0}^\infty x_i$' 
  54.     latex2img(text, size=48, color=(0.1,0.8,0.8), out=r'd:\demo.png'
  55.  
  56.     text = r'$\sum_{n=1}^\infty\frac{-e^{i\pi}}{2^n}$' 
  57.     im = latex2img(text, size=48, color=(0.9,0.1,0.1)) 
  58.     im.show() 

 

責任編輯:武曉燕 來源: Python作業輔導員
相關推薦

2017-04-27 08:19:56

Markdown數學公式

2017-06-13 12:57:42

Windows 10Windows分辨率

2014-08-07 15:06:45

Android設備分辨率

2023-08-30 13:09:12

AI模型

2017-04-10 09:17:08

神經網絡分辨率像素遞歸

2014-10-15 14:58:50

iPhone6iOS 8分辨率

2017-05-04 21:15:30

Android分辨率

2023-10-27 08:30:52

傳輸接口刷新率

2013-08-13 11:09:10

android分辨率

2023-10-12 07:43:45

2011-01-07 10:26:13

linux報警聲分辨率

2012-08-14 16:52:26

手機屏幕分辨率

2011-08-16 17:57:51

linux修改分辨率

2009-04-16 08:19:40

Windows 7微軟操作系統

2024-08-27 00:01:00

LaTeX語言符號

2011-08-16 10:17:16

SVGATextMod中文man

2011-05-30 08:42:56

Android

2009-11-27 13:03:42

SUSE FAQ修改X

2021-01-20 11:14:47

人工智能算法技術

2024-07-05 10:41:30

目標檢測算法
點贊
收藏

51CTO技術棧公眾號

国产高清在线| 亚洲第一综合网| 97超碰资源站在线观看| 国产成人鲁色资源国产91色综| 欧美成人三级视频网站| 91丝袜在线观看| 成人h在线观看| 亚洲欧美在线aaa| 波多野结衣成人在线| 日韩精品国产一区二区| 国产videos久久| 欧美另类videos死尸| 亚洲精品少妇一区二区| 天天射,天天干| 青青草国产精品亚洲专区无| 久久影院在线观看| 在线观看日韩精品视频| 成人在线视频观看| 亚洲一区二区视频在线观看| 91亚色免费| 日日骚av一区二区| 91国语精品自产拍| 欧美一区欧美二区| 亚洲中文字幕无码中文字| a黄色在线观看| 国产精品男女视频| 在线看片福利| ●精品国产综合乱码久久久久| 国产精品一区二区三区不卡| 中文字幕一区二区三区人妻四季 | 欧美永久精品| 亚洲乱码一区av黑人高潮| 视频二区在线播放| 国产色播av在线| 亚洲欧洲国产日韩| 欧美12av| 免费国产精品视频| 日本亚洲最大的色成网站www| 欧美乱大交xxxxx| 日韩毛片无码永久免费看| 深夜福利一区二区三区| 欧美在线制服丝袜| 国产黄页在线观看| 美女网站视频在线| 亚洲天堂成人网| 精品国产区在线| 国产aⅴ爽av久久久久成人| 美女久久一区| 97视频com| 中文字幕手机在线观看| 黄色av网站免费| 国产精品美女久久久久人| 色综合天天综合网天天狠天天| 久久av综合网| 日本美女高清在线观看免费| 91免费国产在线观看| 91成人伦理在线电影| 中文字幕永久免费视频| 久久婷婷一区| 日韩免费在线免费观看| 日本一级黄色录像| 亚洲国产二区| 午夜精品视频网站| xxxx 国产| 亚洲高清二区| 久久久久久网站| 久久精品视频8| 欧美在线资源| 不卡av在线播放| 午夜爽爽爽男女免费观看| 久久精品国产99久久| 一区二区欧美激情| av在线网站观看| 欧美欧美黄在线二区| 亚洲老板91色精品久久| 鲁大师私人影院在线观看| 都市激情亚洲| 精品无人区乱码1区2区3区在线| 黑森林av导航| 欧美人与动xxxxz0oz| 亚洲电影免费观看高清| 欧美性xxxx图片| 亚洲品质自拍| 中文字幕欧美专区| 91香蕉国产视频| 欧美疯狂party性派对| 中文字幕精品www乱入免费视频| 国产美女永久免费无遮挡| 成人高清av| 久久天天躁狠狠躁夜夜躁| 狠狠色噜噜狠狠狠狠色吗综合| 国产免费999| 日韩不卡免费高清视频| 欧美日韩亚洲综合| 18禁一区二区三区| 国内精品偷拍| 在线观看国产精品91| 青青草华人在线视频| 午夜精品久久久久99热蜜桃导演 | 日本高清www| 欧美色图一区| 久久成年人免费电影| 国产在线视频二区| 午夜激情一区| 日本精品一区二区三区在线| 91国内精品久久久| 成人动漫在线一区| 精品国产乱码久久久久久88av | 日本美女一区二区三区| 成人中心免费视频| 午夜福利理论片在线观看| 国产午夜一区二区三区| 黄色网络在线观看| 欧美gv在线观看| 欧美亚洲综合久久| 日本女人性视频| 欧美猛男男男激情videos| 欲色天天网综合久久| 清纯粉嫩极品夜夜嗨av| 亚洲制服av| 成人精品网站在线观看| 丰满熟女一区二区三区| 久久精品无码一区二区三区| 熟妇熟女乱妇乱女网站| 黄色污污视频在线观看| 欧美三级日韩在线| av鲁丝一区鲁丝二区鲁丝三区| 一区二区小说| 九九热视频这里只有精品| www.国产毛片| www.亚洲人| 亚洲免费久久| 三级在线观看视频| 欧美一区二区三区人| 久久久久久久久久久久久久久| 欧美喷水视频| 国产精自产拍久久久久久| 婷婷在线观看视频| 中文字幕亚洲精品在线观看| 精品一区二区中文字幕| 日韩成人视屏| 日韩中文字幕网站| 奴色虐av一区二区三区| 成人的网站免费观看| 色中文字幕在线观看| 69久成人做爰电影| 精品久久久久久久久久久院品网| 黄色网页免费在线观看| japansex久久高清精品| 久久久国产精品一区| 国产精品欧美久久久久天天影视| 国产精品三级视频| 久久久精品高清| 香蕉视频国产精品| 5g国产欧美日韩视频| 羞羞的视频在线看| 日韩欧美激情一区| 久久精品国产亚洲av香蕉 | 欧美影院一区二区三区| 一区二区三区久久久久| 免费高清不卡av| 一区二区三区四区欧美| а天堂中文最新一区二区三区| 久久精品国产91精品亚洲| 国产精品无码白浆高潮| 一区二区三区欧美| japanese在线观看| 久久激情中文| 亚洲AV无码成人精品一区| 日韩成人在线观看视频| 91成品人片a无限观看| 色天堂在线视频| 欧美午夜寂寞影院| 永久免费看黄网站| 99综合电影在线视频| 午夜肉伦伦影院| 久久国产影院| 成人动漫视频在线观看免费| 天堂中文av在线资源库| 在线观看久久久久久| 国产毛片毛片毛片毛片毛片| 亚洲国产婷婷综合在线精品| 欧美最猛性xxxxx(亚洲精品)| 久久婷婷国产麻豆91| 波多野结衣中文一区| 无码人妻丰满熟妇区五十路百度| 欧美成人激情| 国产无套精品一区二区| 高清av一区二区三区| 另类色图亚洲色图| 欧美18xxxxx| 欧美一区三区二区| 欧美一区二区三区网站| 亚洲欧美色图小说| 四虎永久免费观看| 人人爽香蕉精品| 日本阿v视频在线观看| 不卡在线一区| 国产精品久久一区二区三区| 中文另类视频| 久久久免费电影| 色老头视频在线观看| 欧美mv日韩mv亚洲| 91av国产精品| 91久久免费观看| 日本少妇吞精囗交| 国产精品福利一区| 亚洲av综合一区二区| 国产成人在线视频网站| 天天爽人人爽夜夜爽| 亚洲久色影视| 免费看污污视频| 精品国产精品国产偷麻豆| 国产精品久久久久久免费观看| 成人午夜一级| 日本亚洲精品在线观看| 金瓶狂野欧美性猛交xxxx| 色久欧美在线视频观看| 九色蝌蚪在线| 日韩成人av网| 欧美特级特黄aaaaaa在线看| 欧美一区二区视频在线观看| 美女黄页在线观看| 日本韩国欧美国产| 日韩av大片在线观看| 一区二区三区色| 久久久久久视频| 国产精品国产精品国产专区不蜜| 99久久人妻无码精品系列| 99精品欧美一区二区三区小说| 色偷偷中文字幕| 国产麻豆一精品一av一免费 | 日本美女久久| 国产精品1234| 日韩av福利| 青青青国产精品一区二区| av男人的天堂在线观看| 久久久久久久久久久免费| 羞羞视频在线观看不卡| 久久97久久97精品免视看 | 日韩免费在线| 亚洲成人自拍| 久久在线免费| 中文一区一区三区免费| 99国产精品免费视频观看| 一区二区三区av| 婷婷亚洲五月| 99热这里只有精品免费| 欧美激情视频一区二区三区免费| 精品国产一区二区三区在线| 91成人国产| 国产资源在线免费观看| 在线成人欧美| 国产不卡一区二区视频| 亚洲综合另类| 91淫黄看大片| 极品美女销魂一区二区三区免费| 欧美午夜一区二区| 正在播放国产对白害羞| 国产精品二三区| √天堂中文官网8在线| 亚洲免费在线电影| 免费网站看av| 精品福利在线看| 国产熟妇一区二区三区四区| 色综合av在线| 一道本在线视频| 欧美一级高清片| 色一情一乱一区二区三区| 日韩久久精品电影| aaa日本高清在线播放免费观看| 在线视频国产日韩| av毛片在线看| 2019中文字幕在线免费观看| 天天免费亚洲黑人免费| 国产欧美日韩中文字幕在线| 精品一区视频| 久久综合一区| 66视频精品| 日本www在线视频| 日本大胆欧美人术艺术动态| 一二三av在线| 91蝌蚪国产九色| 小泽玛利亚一区| 精品国产户外野外| 亚洲天堂中文在线| 精品日韩在线一区| 经典三级在线| 九九精品视频在线观看| 一区二区乱码| 亚洲自拍偷拍区| 久久av综合| 国产一级黄色录像片| 国产视频一区三区| 国产女同无遮挡互慰高潮91| 成人av网站免费观看| 国产一二三av| 色呦呦一区二区三区| 91夜夜未满十八勿入爽爽影院| 日本亚州欧洲精品不卡| 免费精品视频一区| 午夜日韩在线| 91日韩视频在线观看| www.欧美.com| 欧美xxxx黑人xyx性爽| 色激情天天射综合网| 亚洲精品无码专区| 日韩视频永久免费观看| 美女100%一区| 国产欧美一区二区三区另类精品| 日韩美女一区二区三区在线观看| 欧美爱爱视频免费看| 国产69精品一区二区亚洲孕妇| 欧美激情视频二区| 欧美午夜久久久| 三级视频在线看| 九九热精品视频国产| 成人免费91| 亚洲国产一区二区三区在线 | 国产精品免费成人| 成人免费高清视频在线观看| 亚洲人与黑人屁股眼交| 日本久久电影网| 亚洲色图21p| 国内精品久久久久影院优 | 激情五月激情综合| 日韩欧美在线视频观看| 乱色精品无码一区二区国产盗| 久久精品国产一区| 久久91视频| 欧美裸体网站| 99伊人成综合| 超碰男人的天堂| 无码av免费一区二区三区试看| 国产乱淫a∨片免费视频| 中文字幕日韩欧美| 电影天堂国产精品| 欧美在线一二三区| 久久婷婷一区| 伊人网伊人影院| 色噜噜狠狠成人中文综合| 亚洲精品久久久久久久久久| 操91在线视频| 国产人与zoxxxx另类91| 超碰在线免费观看97| 九一九一国产精品| 日本不卡一二区| 91精品啪在线观看国产60岁| 国产丝袜在线| 91pron在线| 在线日韩中文| 香蕉网在线播放| 色八戒一区二区三区| 成人全视频高清免费观看| 国产精品久久久久9999| 日韩av片子| 天堂在线一区二区三区| 亚洲九九爱视频| 国产精品偷伦视频免费观看国产 | 在线成人亚洲| 精品无码在线视频| 色妹子一区二区| 欧美96在线| 成人av播放| 久久av最新网址| 国产又粗又硬视频| 日韩三区在线观看| 黄色视屏在线免费观看| 日本公妇乱淫免费视频一区三区| 日本不卡视频一二三区| 国产极品美女在线| 精品国免费一区二区三区| 天堂а√在线最新版中文在线| 欧美视频小说| 黑人精品欧美一区二区蜜桃| 国产在线视频卡一卡二| 亚洲丝袜在线视频| www.欧美| 国产91对白刺激露脸在线观看| 中文av字幕一区| 亚洲国产精品无码久久| 日本高清不卡的在线| 国产精品久久久久久久免费观看| 在线播放av网址| 在线观看亚洲一区| 丁香花在线电影小说观看| 日韩av高清在线播放| 国内外成人在线| 久久久国产高清| 久久久精品欧美| 中国av一区| 岛国大片在线免费观看| 欧美主播一区二区三区| 肉体视频在线| 亚洲欧美一区二区原创| av福利精品导航| 国产精品一区二区免费视频| 2019av中文字幕| 午夜日韩在线| 亚洲综合久久av一区二区三区|