最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

導(dǎo)語:

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

基本思路

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

pip3 install openpyxl
pip3 install Pillow

色值轉(zhuǎn)換

從圖片讀取的像素塊色值是 RGB 值,而 openpyxl 向 Excel cell 內(nèi)填充顏色是十六進(jìn)制色值,因此咱們先寫一個 RGB 和十六進(jìn)制色值轉(zhuǎn)換的一個函數(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)是長方形,修改為正方形才不會使圖片變形

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ù),接下來要做的操作就是逐行讀取圖片的 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()

最后再來個入口函數(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)

驚艷時刻

激動的心,顫抖的手,來看下最終效果咋樣。

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

總結(jié)

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

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

相關(guān)文章

最新評論

麻栗坡县| 晴隆县| 宿迁市| 太谷县| 清原| 蚌埠市| 青铜峡市| 和政县| 伊春市| 永定县| 儋州市| 红桥区| 乌恰县| 镇赉县| 资阳市| 原阳县| 自贡市| 宁武县| 瓦房店市| 白玉县| 大冶市| 赣州市| 土默特左旗| 包头市| 芮城县| 合水县| 绥宁县| 镇雄县| 汽车| 蚌埠市| 明星| 德阳市| 三台县| 望谟县| 东至县| 临邑县| 宁明县| 岳池县| 都江堰市| 四平市| 弋阳县|