<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          神操作!居然有人用 Python 在 Excel 中畫畫

          共 1964字,需瀏覽 4分鐘

           ·

          2022-03-17 02:13

          ↑?關(guān)注 + 星標(biāo)?,每天學(xué)Python新技能

          后臺(tái)回復(fù)【大禮包】送你Python自學(xué)大禮包

          十字繡大家都知道吧,今天咱們來玩?zhèn)€電子版的十字繡。

          用 Python 讀取圖片的像素值,然后輸出到 Excel 表格中,最終形成一幅像素畫,也就是電子版的十字繡了。

          準(zhǔn)備

          既然要讀取圖片,那就需要用到 Pillow 庫,操作 Excel 需要用到 openpyxl 庫,先把這兩個(gè)庫安裝好。

          $?pip3?install?openpyxl
          $?pip3?install?Pillow

          色值轉(zhuǎn)換

          從圖片讀取的像素塊色值是 RGB 值,而 openpyxl 向 Excel cell 內(nèi)填充顏色是十六進(jìn)制色值,因此咱們先寫一個(gè) RGB 和十六進(jìn)制色值轉(zhuǎn)換的一個(gè)函數(shù)。

          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

          圖片轉(zhuǎn)換

          有了色值轉(zhuǎn)換函數(shù),接下來要做的操作就是逐行讀取圖片的 RGB 色值,之后將 RGB 色值轉(zhuǎn)換為十六進(jìn)制色值填充到 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)
          ????????????#?設(shè)置填充顏色為?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()

          最后再來個(gè)入口函數(shù),就大功告成啦~

          if?__name__?==?'__main__':
          ????img_path?=?'/Users/xyz/Documents/tmp/03.png'
          ????excel_path?=?'/Users/xyz/Documents/tmp/3.xlsx'
          ????img2excel(img_path,?excel_path)

          驚艷時(shí)刻

          激動(dòng)的心,顫抖的手,來看下最終效果咋樣。

          是不是覺得有那么一絲絲韻味呢...

          總結(jié)

          今天派森醬帶大家一起實(shí)現(xiàn)了 Excel 像素畫,小伙伴們可以發(fā)揮自己的想象,比如把女神的頭像藏進(jìn) Excel 中然后發(fā)她,你猜女神會(huì)不會(huì)被驚艷到呢。

          推薦閱讀

          1. 用Python制作可視化報(bào)表,這也太快了!

          2. 別去外包

          3. 再見!MySQL!

          4. 數(shù)據(jù)分析,YYDS


          您看此文用???分??秒,轉(zhuǎn)發(fā)只需1秒

          瀏覽 50
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲国产精品成人综合久 | 成人久久久久 | 午夜av影院 | 我要操在线视频 | 国产内射免费视频 |