精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

天堂av一区二区三区在线播放| 国产网站在线免费观看| 国产精品久久久免费| 亚洲美女av黄| 国产一级不卡毛片| а√天堂资源地址在线下载| 99久久精品国产毛片| 国产精品白丝jk喷水视频一区| 欧美一级特黄高清视频| 久草在线综合| 欧美日本一区二区三区四区 | 亚洲精品中文字幕乱码无线| 国产伦理精品| 亚洲视频中文字幕| 国产亚洲精品自在久久| 中文字幕+乱码+中文乱码91| 在线成人av| 日韩在线中文视频| 成人免费av片| 亚洲啊v在线免费视频| 色猫猫国产区一区二在线视频| 日本xxxxx18| 黄色片在线看| 成人午夜精品在线| 国产日产欧美a一级在线| 国产精品99re| 欧美丰满日韩| 亚洲精品少妇网址| 亚洲少妇一区二区三区| a成人v在线| 日韩欧美国产激情| 国产69精品久久久久999小说| 天堂аⅴ在线地址8| 久久综合九色综合欧美98| 99精彩视频在线观看免费| 国产三级理论片| 性色一区二区| 97久久久久久| 久久久久久久久99| 中文在线播放一区二区 | 麻豆视频在线免费观看| 91日韩在线专区| 国产精品久久国产精品| 国产欧美久久久精品免费| 日本三级亚洲精品| 国产99久久精品一区二区| 日本少妇bbwbbw精品| 综合国产精品| 久久国产精品久久久久| 天堂网av2018| 久久免费大视频| 亚洲激情综合网| 亚洲开心激情网| 少妇熟女视频一区二区三区| 久久wwww| 欧美va亚洲va在线观看蝴蝶网| 中文字幕avav| 香蕉免费一区二区三区在线观看| 日韩一级高清毛片| 夜夜爽久久精品91| 久久99精品久久久野外观看| 日韩欧美中文字幕公布| 一级黄色片在线免费观看| 日本国产亚洲| 3atv在线一区二区三区| 三区视频在线观看| 免费精品一区| 亚洲白拍色综合图区| 菠萝菠萝蜜网站| 免费久久精品| 中文字幕欧美国内| 在线看的片片片免费| 欧美精品国产一区二区| 久久久久久久久网站| 日本中文字幕网| 久久久久99| 国产有码一区二区| 国产成人久久精品77777综合| 国产成人精品www牛牛影视| 国产精品一区而去| 九色网友自拍视频手机在线| 国产拍欧美日韩视频二区| 亚洲欧美精品| 日韩另类在线| 欧美性videos高清精品| 国产91色在线观看| 久久精品九色| 亚洲欧美国产一本综合首页| 超碰人人干人人| 欧美午夜影院| 国产精品va在线播放我和闺蜜| 夜夜躁狠狠躁日日躁av| 东方aⅴ免费观看久久av| 麻豆传媒一区| а√资源新版在线天堂| 狠狠色狠狠色综合日日五| 99热手机在线| 97久久亚洲| 国产亚洲视频在线| 精品少妇一二三区| 日韩和的一区二区| 97久久夜色精品国产九色| 青青久在线视频| 中文字幕在线观看一区二区| 男人日女人视频网站| 欧美成人aaa| 亚洲精品成人久久电影| 337人体粉嫩噜噜噜| 欧美视频一区| 国产精品一二三视频| 欧洲av在线播放| 国产精品久久二区二区| 欧美v在线观看| 日韩精品免费视频一区二区三区| 亚洲桃花岛网站| 免费网站看av| 国产又粗又猛又爽又黄91精品| 久久久久久久久久久久久久久久av| 麻豆免费在线观看| 色婷婷久久综合| fc2成人免费视频| 我不卡神马影院| 国产精品99久久久久久www| 免费看av毛片| 亚洲女同一区二区| 美女少妇一区二区| 久久99国产精品视频| 久久久久久久一区二区| 国产男男gay网站| 亚洲国产精品精华液2区45| 欧美久久久久久久久久久久久 | 91热精品视频| 岛国大片在线观看| 午夜激情一区二区三区| 麻豆网站免费观看| 亚洲国产精品成人| 成人精品视频99在线观看免费| 极品白浆推特女神在线观看| 午夜电影久久久| 95视频在线观看| 欧美日韩综合| 99超碰麻豆| 在线heyzo| 日韩欧美国产一区二区三区| 亚洲国产123| 久久精品国产一区二区三 | xxxxx日韩| 在线观看国产91| 在哪里可以看毛片| 三级欧美韩日大片在线看| 免费日韩av电影| www.成人影院| 在线观看国产欧美| 中文字幕乱码人妻无码久久| 中文字幕免费在线观看视频一区| 欧美成人黄色网址| 欧美系列电影免费观看| 国产精品观看在线亚洲人成网| 黄色在线播放| 欧美日韩在线播| 午夜国产小视频| 国产真实乱子伦精品视频| 性做爰过程免费播放| 高清国产一区二区三区四区五区| 欧美精品在线观看| 免费看国产片在线观看| 欧美视频13p| 国产精品高清无码在线观看| 日本午夜精品一区二区三区电影| 亚洲精品人成| 一区三区自拍| 91国语精品自产拍在线观看性色 | 色网站在线免费观看| 狠狠爱在线视频一区| 国产一级久久久久毛片精品| 久久av资源站| 2019日韩中文字幕mv| 亚洲三级性片| 国产日本欧美一区| 午夜av在线播放| 亚洲精品美女久久| 中文字幕免费播放| 一区二区三区美女视频| 极品白嫩丰满美女无套| 免费不卡在线观看| www成人免费| 国产探花在线精品| 97操在线视频| 日韩欧美一区二区三区免费观看| 久久人体大胆视频| 亚洲日本在线播放| 欧美乱妇20p| 久久午夜免费视频| 中文字幕一区二区三区四区| 久久精品无码专区| 奇米色一区二区三区四区| 国产av熟女一区二区三区| 一本久久青青| 成人三级在线| 国产精品xxx| 性欧美视频videos6一9| 日本电影全部在线观看网站视频| 亚洲第一在线视频| 一区二区三区日| 欧美日韩免费一区| 在线免费日韩av| 亚洲国产精品t66y| 中文字幕乱码一区| 国产中文字幕一区| 日韩欧美黄色大片| 日韩一区二区久久| www.亚洲一区二区| 精品久久久亚洲| 精品视频一区在线| 亚洲网一区二区三区| 国产精品人成电影在线观看| av影院在线免费观看| 不卡av日日日| 成人综合影院| 亚洲人成电影网站色xx| 神马久久久久久久久久| 日韩一区二区三区四区| 伊人色综合久久久| 欧美午夜精品久久久久久人妖| 欧美日韩人妻精品一区二区三区| 欧美经典三级视频一区二区三区| 国产又黄又粗又猛又爽的视频| 国产乱对白刺激视频不卡| 孩娇小videos精品| 久久精品官网| 丝袜老师办公室里做好紧好爽| 精品69视频一区二区三区Q| 亚洲一区在线直播| 欧美一区二区性| 日韩精品av一区二区三区| 免费观看成人www动漫视频| 亚洲va久久久噜噜噜久久天堂| 成人免费黄色| 国产精品视频不卡| 日韩三区免费| 国产精品普通话| 看片一区二区| 国产精品网红直播| 国产亚洲人成a在线v网站| 国产成人精品午夜| 欧美日韩视频免费观看| 热久久99这里有精品| 美女写真久久影院| 国产精品精品视频| 巨胸喷奶水www久久久免费动漫| 国产国语videosex另类| 欧美日韩五区| 91精品久久久久久久久久另类| 国产精品久久久久久久久免费高清| 国产精品久久久久99| 欧美日韩女优| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 噜噜噜91成人网| 99免费视频观看| 日韩中文字幕区一区有砖一区| 男人的天堂日韩| 韩日欧美一区二区三区| 亚洲一二区在线观看| 成人午夜在线视频| av鲁丝一区鲁丝二区鲁丝三区| 91视频.com| 男人操女人动态图| 中文字幕一区二区三区不卡在线| 久久人妻无码aⅴ毛片a片app| 亚洲欧美日韩国产成人精品影院| 青青草手机在线观看| 午夜视频在线观看一区二区三区 | 国产模特精品视频久久久久| 欧美一级片中文字幕 | 9.1在线观看免费| 91在线视频观看| 国产免费嫩草影院| 一区二区三区久久| 国产午夜免费福利| 欧美一a一片一级一片| 国产三级在线观看视频| 亚洲第一精品福利| 懂色一区二区三区| 欧美疯狂xxxx大交乱88av| 日韩脚交footjobhd| 国产精品亚洲自拍| 国产伦理久久久久久妇女| 日本在线观看不卡| 欧美精品国产| 天天爱天天操天天干| 成人激情动漫在线观看| 国精产品一区二区三区| 一区二区在线观看免费| 亚洲黄色小说图片| 91精品国产色综合久久| 天天综合网在线观看| 久久精视频免费在线久久完整在线看| av资源新版天堂在线| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 国产精品三级久久久久三级| 国产精品18p| 欧美日本在线播放| 你懂的免费在线观看视频网站| 久久久av一区| 成人免费福利| 俄罗斯精品一区二区三区| 日韩在线欧美| 久久9精品区-无套内射无码| 粉嫩蜜臀av国产精品网站| 婷婷综合在线视频| 岛国av一区二区三区| 精品区在线观看| 日韩中文字幕精品| 成人直播视频| 精品1区2区| 欧美激情91| 国产一级片自拍| 久久亚洲春色中文字幕久久久| 欧美精品久久久久性色| 欧美日韩视频在线第一区 | 真实新婚偷拍xxxxx| 亚洲丁香久久久| 在线观看男女av免费网址| 国产美女搞久久| 国产欧美一区二区三区精品观看| 日韩精品一区在线视频| 国产一区日韩二区欧美三区| 一区二区三区在线观看免费视频| 福利微拍一区二区| 日批免费在线观看| 欧美黄色成人网| 欧洲精品99毛片免费高清观看| 亚洲精品日韩精品| 麻豆成人综合网| 国内精品卡一卡二卡三| 色狠狠一区二区三区香蕉| 无码国产精品96久久久久| 97福利一区二区| 999在线精品| 日韩精品在线观看av| 丁香激情综合五月| 欧美成人三级视频| 日韩欧美国产综合| 欧美四级在线| 成人情视频高清免费观看电影| 欧美日本在线| 免费不卡的av| 午夜一区二区三区在线观看| 欧美在线 | 亚洲| 91av视频导航| 宅男在线一区| 午夜视频你懂的| 亚洲视频 欧洲视频| a天堂在线观看视频| 久久久久久久久亚洲| 老牛精品亚洲成av人片| 日韩欧美视频网站| 久久久精品日韩欧美| 亚洲av无码不卡| 日韩在线精品视频| 久久丁香四色| 欧美乱大交xxxxx潮喷l头像| 久久伊人中文字幕| 国产免费一区二区三区四区五区| 一区二区三区亚洲| 日本午夜免费一区二区| 91嫩草国产丨精品入口麻豆| 丁香另类激情小说| 欧美精品韩国精品| 中文字幕精品在线视频| 日韩影片在线观看| 日本午夜激情视频| 久久精品视频在线免费观看| 亚洲天堂男人网| 欧美另类在线播放| 欧美国产极品| 污污动漫在线观看| 亚洲在线视频一区| 免费观看成年在线视频网站| 国产美女91呻吟求| 亚洲图片在线| 精品欧美一区二区久久久| 91麻豆精品国产91久久久久久 | 99国产精品久久久久久久| 欧美精品黑人猛交高潮| 欧美日韩中文一区| 手机av在线播放| 欧美一区二区三区四区在线观看地址 | 欧美精品一区二区三区久久久竹菊| 在线观看国产网站| 7777精品久久久大香线蕉| √最新版天堂资源网在线| 视频二区一区| 成人18精品视频| 一级全黄少妇性色生活片| 97国产精品视频人人做人人爱| 成人免费av| 中文字幕在线免费看线人| 在线综合亚洲欧美在线视频| 这里有精品可以观看|