十字绣。每个人都知道。今天,我们来玩一个电子版的十字绣。用Python读取图片的像素值,然后输出到Excel表格,最后形成像素画,这就是电子版的十字绣。既然要读图片,就需要用到Pillow库,操作Excel就需要用到openpyxl库。首先,安装这两个库。$pip3installopenpyxl$pip3installPillow颜色值转换从图片中读取的像素块颜色值是一个RGB值,openpyxl用十六进制颜色值填充Excel单元格,所以我们先写一个RGB和十六进制颜色值转换的函数。defrgb_to_hex(rgb):rgb=rgb.split(',')color=''foriinRGB:num=int(i)color+=str(hex(num))[-2:].replace('x','0').upper()returncolorimageconversion有了颜色值转换函数,接下来的操作就是逐行读取图像的RGB颜色值,然后将RGB颜色值转换成16进制颜色值并将它们填入Excel的单元格中即可。defimg2excel(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.0sheet=wb["Sheet"]forwinrange(img_width):forhinrange(img_height):data=str_strlist[w,h]颜色=str(data).replace("(","").replace(")","")color=rgb_to_hex(color)#设置填充颜色为colorfille=PatternFill("solid",fgColor=color)sheet.cell(h+1,w+1).fill=filleforiinrange(1,sheet.max_row+1):sheet.row_dimensions[i].height=cell_heightforiinrange(1,sheet.max_column+1):sheet.column_dimensions[get_column_letter(i)].width=cell_widthwb.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)激动的心,激动的手,惊艳的一刻,让我们一起来看看e最终效果如何。是不是觉得还有这么一丝的韵味呢……综上所述,今天佩森酱就带大家一起来认识一下Excel像素画。小伙伴们可以发挥自己的想象力,比如把女神的头像藏在Excel里发上来,你猜女神会不会惊叹呢?
