使用Python在Excel畫畫
準備
既然要讀取圖片,那就需要用到 Pillow 庫,操作 Excel 需要用到 openpyxl 庫,先把這兩個庫安裝好。
$ pip3 install openpyxl $ pip3 install Pillow
色值轉換
從圖片讀取的畫素塊色值是 RGB 值,而 openpyxl 向 Excel cell 內填充顏色是十六進位制色值,因此我們們先寫一個 RGB 和十六進位制色值轉換的一個函式。
def rgb_to_hex(rgb): rgb = rgb.split(',') color = '' for i in RGB: num = int(i) color += str(hex(num))[-2:].replace('x', '0').upper() return color
圖片轉換
有了色值轉換函式,接下來要做的操作就是逐行讀取圖片的 RGB 色值,之後將 RGB 色值轉換為十六進位制色值填充到 Excel 的 cell 中即可。
def img2excel(img_path, excel_path): img_src = Image.open(img_path) # 圖片寬高 img_width = img_src.size[0] img_height = img_src.size[1] str_strlist = img_src.load() wb = openpyxl.Workbook() wb.save(excel_path) wb = openpyxl.load_workbook(excel_path) cell_width, cell_height = 1.0, 1.0 sheet = wb["Sheet"] for w in range(img_width): for h in range(img_height): data = str_strlist[w, h] color = str(data).replace("(", "").replace(")", "") color = rgb_to_hex(color) # 設定填充顏色為 color fille = PatternFill("solid", fgColor=color) sheet.cell(h + 1, w + 1).fill = fille for i in range(1, sheet.max_row + 1): sheet.row_dimensions[i].height = cell_height for i in range(1, sheet.max_column + 1): sheet.column_dimensions[get_column_letter(i)].width = cell_width wb.save(excel_path) img_src.close()
最後再來個入口函式,就大功告成啦~
if __name__ == '__main__': img_path = '/Users/xyz/Documents/tmp/03.png' excel_path = '/Users/xyz/Documents/tmp/3.xlsx' img2excel(img_path, excel_path)
驚豔時刻
激動的心,顫抖的手,來看下最終效果咋樣。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2853878/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python中使用OpenCV畫線PythonOpenCV
- 使用Excel畫出各類統計圖(3)Excel
- lottie 動畫在 vue 中的使用動畫Vue
- python字元畫Python字元
- matplotlib 畫圖直接寫入excelExcel
- 使用python的turtle繪畫滑稽臉Python
- 在Mac上觀看畫中畫影片,讓你的使用更方便Mac
- 在終端畫畫、炒股、玩遊戲遊戲
- 用excel表畫一個樂高Excel
- 使用畫素單位設定 EXCEL 列寬或行高Excel
- Excel表格如何按漢字的筆畫排序?Excel表格按漢字的筆畫排序的方法Excel排序
- 在Flutter中使用Flare構建的動畫Flutter動畫
- 在畫中畫視窗中安裝 React 元件React元件
- Python 畫雷達圖Python
- 玩遊戲、畫畫、做大資料…EXCEL還有什麼是做不到的?遊戲大資料Excel
- IOS動畫使用iOS動畫
- 使用SAPGUI畫圖GUI
- 在CAD夢想畫圖中如何使用PLAN命令
- 在 CSS 動畫中使用硬體加速(翻譯)CSS動畫
- 初識屬性動畫——使用Animator建立動畫動畫
- XamarinAndroid元件教程RecylerView動畫元件使用動畫(3)NaNAndroid元件View動畫
- XamarinAndroid元件教程RecylerView動畫元件使用動畫(2)NaNAndroid元件View動畫
- python 畫小提琴圖Python
- 用Python能畫哪些樹?Python
- python如何畫直方圖Python直方圖
- 箱形圖(python畫圖)Python
- Android 幀動畫使用Android動畫
- Flutter動畫的使用Flutter動畫
- 使用者畫像
- 漫畫:在Java中使用條件匹配四種方式!Java
- 使用Python畫小豬佩奇 社會人標配Python
- Python 精靈模組_幀動畫_純畫筆下雪效果.pyPython動畫
- AI作畫—中國畫之山水畫AI
- xlwings:在Excel中整合PythonExcelPython
- python 畫雷達回波PPI圖Python
- 用Python畫一把扇子Python
- 【python:turtle繪畫 聖誕樹】Python
- python中n角星畫法Python