欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 居然可以在 Excel 中畫畫你知道嗎

 更新時(shí)間:2022年02月15日 15:48:46   作者:迢迢x  
哈嘍,哈嘍~對(duì)于Excel大家想到的是不是各種圖表制作,今天我們來(lái)個(gè)不一樣的。十字繡大家都知道吧,今天咱們來(lái)玩?zhèn)€電子版的十字繡

導(dǎo)語(yǔ):

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

基本思路

實(shí)現(xiàn)這個(gè)需求的基本思路是讀取這張圖片每一個(gè)像素的色彩值,然后給 excel 里的每一個(gè)單元格填充上顏色。既然要讀取圖片,那就需要用到 Pillow 庫(kù),操作 Excel 需要用到 openpyxl 庫(kù),先把這兩個(gè)庫(kù)安裝好。

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

excel 的單元格默認(rèn)是長(zhǎng)方形,修改為正方形才不會(huì)使圖片變形

if h == 1:
  _w = cell.column
  _h = cell.col_idx
  # 調(diào)整列寬
  worksheet.column_dimensions[_w].width = 1
 
# 調(diào)整行高
worksheet.row_dimensions[h].height = 6

這里用到了雙重for循環(huán),外層是`width`,里層是`height`,是一列一列的填充顏色,因此判斷`if h == 1`,避免多次調(diào)整列寬。

圖片轉(zhuǎn)換

有了色值轉(zhuǎn)換函數(shù),接下來(lái)要做的操作就是逐行讀取圖片的 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()

最后再來(lái)個(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)的心,顫抖的手,來(lái)看下最終效果咋樣。

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

總結(jié)

好啦今日代碼分享就到這了,喜歡的記得收藏噢~

到此這篇關(guān)于Python 居然可以在 Excel 中畫畫你知道嗎的文章就介紹到這了,更多相關(guān)Python Excel畫畫內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python屬于哪種語(yǔ)言

    python屬于哪種語(yǔ)言

    在本篇內(nèi)容里小編給大家整理的是一篇關(guān)于python屬于哪種語(yǔ)言的一篇基礎(chǔ)內(nèi)容文章,有興趣的朋友們可以參考下。
    2020-08-08
  • keras .h5轉(zhuǎn)移動(dòng)端的.tflite文件實(shí)現(xiàn)方式

    keras .h5轉(zhuǎn)移動(dòng)端的.tflite文件實(shí)現(xiàn)方式

    這篇文章主要介紹了keras .h5轉(zhuǎn)移動(dòng)端的.tflite文件實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-05-05
  • python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁(yè)面的實(shí)例代碼

    python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁(yè)面的實(shí)例代碼

    這篇文章主要介紹了python面向?qū)ο蠖嗑€程爬蟲爬取搜狐頁(yè)面的實(shí)例代碼,需要的朋友可以參考下
    2018-05-05
  • Python爬蟲實(shí)例扒取2345天氣預(yù)報(bào)

    Python爬蟲實(shí)例扒取2345天氣預(yù)報(bào)

    本篇文章給大家詳細(xì)分析了通過Python爬蟲如何采集到2345的天氣預(yù)報(bào)信息,有興趣的朋友參考學(xué)習(xí)下吧。
    2018-03-03
  • python篩選出兩個(gè)文件中重復(fù)行的方法

    python篩選出兩個(gè)文件中重復(fù)行的方法

    這篇文章主要為大家詳細(xì)介紹了python篩選出兩個(gè)文件中重復(fù)行的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • python中的異步爬蟲詳解

    python中的異步爬蟲詳解

    這篇文章主要介紹了python中的異步爬蟲詳解,所謂的異步異步?IO,就是發(fā)起一個(gè)?IO?阻塞的操作,但是不用等到它結(jié)束,可以在它執(zhí)行?IO?的過程中繼續(xù)做別的事情,當(dāng)?IO?執(zhí)行完畢之后會(huì)收到它的通知,需要的朋友可以參考下
    2023-08-08
  • Pandas實(shí)現(xiàn)數(shù)據(jù)拼接的操作方法詳解

    Pandas實(shí)現(xiàn)數(shù)據(jù)拼接的操作方法詳解

    Python處理大規(guī)模數(shù)據(jù)集的時(shí)候經(jīng)常需要使用到合并、鏈接的方式進(jìn)行數(shù)據(jù)集的整合,本文為大家主要介紹了.merge()、?.join()?和?.concat()?三種方法,感興趣的可以了解一下
    2022-04-04
  • django模板加載靜態(tài)文件的方法步驟

    django模板加載靜態(tài)文件的方法步驟

    這篇文章主要介紹了django模板加載靜態(tài)文件的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2019-03-03
  • Python pip 常用命令匯總

    Python pip 常用命令匯總

    這篇文章主要介紹了Python pip 常用命令匯總,幫助大家更好的理解和使用pip命令,感興趣的朋友可以了解下
    2020-10-10
  • 簡(jiǎn)單且有用的Python數(shù)據(jù)分析和機(jī)器學(xué)習(xí)代碼

    簡(jiǎn)單且有用的Python數(shù)據(jù)分析和機(jī)器學(xué)習(xí)代碼

    Python編程是一種通用的編程語(yǔ)言,開源、靈活、功能強(qiáng)大且易于使用,python最重要的特性之一是其用于數(shù)據(jù)處理和分析任務(wù)的豐富實(shí)用程序和庫(kù)集,這篇文章主要給大家介紹了一些簡(jiǎn)單且有用的Python數(shù)據(jù)分析和機(jī)器學(xué)習(xí)代碼,需要的朋友可以參考下
    2021-07-07

最新評(píng)論