十字绣。每个人都知道。今天,我们来玩一个电子版的十字绣。用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颜色值转换成十六进制填充即可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_strWorklist=img_src.load()=openpyxlwb.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):,h]color=str(data).replace(“(”,“,”).replace(“)”,“”)color=rgb_to_hex(color)#设置设置设置设置颜色为colorfille=patternfilte=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)惊得我心潮澎湃,手都在颤抖,来看看最后的效果怎么样,是不是觉得有这么一丝神韵……总结今天,我就带大家一起来实现Excel像素画,小伙伴们可以发挥自己的想象力,比如把女神的头像隐藏在Excel里发给她,猜猜女神会不会惊艳。以上就是本次分享的全部内容。觉得文章还不错的话,请关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书和教程,数据库编程、Django、爬虫、云计算等。或者去编程学习网了解更多编程技术知识。
