python 生成excel像素画_用python写一个excel画像素图脚本时所用到的一些库

首先 ,想法源于在果壳网看到的一个用excel画一幅像素图的活动

思路很简单:

先将一张像素图的每个像素点的rgb值取出来

然后用脚本操作excel,将rgb设置为单元格的背景色

主要就在于两点

一、用python来做图片处理

其中用到的模块Image

二、用python操作excel

查了资料网上介绍python操作excel主要有三种方法

1.xlrd, xlwt, xlutils

2.pyExcelerator

3.pywin32

前两种对于简单的excel操作支持都比较好,而且跨平台

而pywin32相当于excel的借口,操作丰富,但只能在window下且安装了excel,

在这个应用中因为设置背景色需要根据不同的rgb值来设置(前两种都只能设置常用颜色值),所以选择后者

值得注意一点的就是

sh.Cells(1,1).Interior.Color=rgb_to_hex((229, 238, 247))设置颜色时要将rgb转换为16进制

还需要先将(229, 238, 247)颠倒一下顺序(247,238,229),否则设置的颜色值与传进去的rgb相反(奇葩)

所用到的就这两个库,就可以自动在excel里面画一幅像素图了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python生成Excel像素画,可以使用openpyxl来读取和编辑Excel文件,同使用OpenCV来处理像。以下是一个示例代码的步骤: 1. 导入所需的:import openpyxl, cv2, openpyxl.styles.PatternFill 2. 加载像:使用OpenCV的cv2.imread函数加载像文件。 3. 获取像的RGB通道:使用像数组的切片操作分别获取红色通道(R)、绿色通道(G)和蓝色通道(B)的像素值。 4. 创建Excel文件:使用openpyxl的load_workbook函数加载现有的Excel文件(如果有)或创建一个新的Excel文件。 5. 获取工作表:使用wb.worksheets[0]获取第一个工作表。 6. 循环遍历像素值:使用两个嵌套的for循环遍历每个像素值。 7. 创建填充样式:根据每个像素的RGB值创建填充样式,并使用PatternFill函数设置填充类型为'solid',前景色为RGB值。 8. 应用填充样式:使用工作表的cell方法选择要应用填充样式的单元格,并将填充样式赋值给单元格的fill属性。 9. 保存Excel文件:使用wb.save函数保存Excel文件。 以下是示例代码: ``` from openpyxl import load_workbook import cv2 as cv from openpyxl.styles import PatternFill image = cv.imread("your_image.jpg", 1) B = image[:, :, 0] G = image[:, :, 1] R = image[:, :, 2] fileName = "output.xlsx" wb = load_workbook(fileName) sheet = wb.worksheets[0] for c in range(1, len(B[0])): for r in range(1, len(B)): d = str(hex(R[r][c])).lstrip("0x").upper() e = str(hex(G[r][c])).lstrip("0x").upper() f = str(hex(B[r][c])).lstrip("0x").upper() while len(d) < 2: d = "0" + d while len(e) < 2: e = "0" + e while len(f) < 2: f = "0" + f RGB = d + e + f fill = PatternFill(fill_type='solid', fgColor=RGB, bgColor="FFFFFF") sheet.cell(row=r, column=c).fill = fill wb.save(fileName) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值