python利用PIL及openpyxl实现图片转为excel表格
最开始是看了一个b站视频,他采用了python加vba实现了将一个图片转化在excel表格当中。https://www.bilibili.com/video/av55033139?t=300
首先是python代码
这里有个相对陌生的模块pIL(Python Imaging Library),pip install Pillow即可安装
这里分析标量图里各个像素的rgb值,并生成一个txt文件
from PIL import Image
imload=Image.open("C:/Users/thinkpad/Desktop/sunmei.jpg")
im=imload.convert("RGB")
width,height=im.size
print(1)
demo=open('rgb2.txt','a')
for y in range(height):for x in range(width):rgb=im.getpixel((x,y))rgb=str(rgb)demo.write(rgb[1:-1]+"\t")demo.write("\n")
demo.close()
然后用excel将该txt文件打开,进入代码界面,
Sub set_rgb()Dim r As Range, arrFor Each r In Range("A:AOQ")arr = Split(r, ",")r.Interior.Color = RGB(CInt(arr(0)), CInt(arr(1)), CInt(arr(2)))NextEnd Sub
这里的AOQ是根据txt最右边的列名决定的(一定要看清楚!!!),由于这个vba编的有点问题,最后会报错提示下标越界,但是不影响正常结果出现,我也就没纠正。最后将列宽改成2.1-2.2左右(用来使每个单元格近似成一个正方形),最后的最后将每个单元格的数据删除就行了。
效果如下
继续放大看,由一个类似像素点的单元格组合而成。
当然这个是可以优化的,一是没必要保存成txt,直接保存成xlsx即可;二是vba实现的将单元格设置背景颜色的步骤也可以用python实现。整体的思路是先将rgb值直接转移到excel对应的单元格上,这一点用xlwt本应该很简单就能做到,但是!!!!xlwt只支持256列,目前一般的图片都比这个大,所以用xlwt就不行,所以我后来采用的是openpyxl,openpyxl功能很强大,能够设置字体、颜色等各种东西。经过我的研究发现他的设置颜色的值就是#加上十六进制的rgb(真是难为我这个对颜色,rgb啥的一窍不通的小白了),然后保存就比较简单了,最终优化代码如下所示;
from PIL import Image
import xlwt
import openpyxl
from openpyxl.styles import PatternFill
#因为xlwt无法输入超过256列的数据,所以在这采用oppyxl
imload=Image.open("C:/Users/thinkpad/Desktop/tiananmenguangchang.jpg")
im=imload.convert("RGB")
width,height=im.size
print(1)
xls=openpyxl.Workbook()
demo = xls.create_sheet(u'天安门广场')
#demo = xls.get_sheet_by_name(u'天安门广场')
#转化函数,由于部分十进制数转化为十六进制会是三位数比如lex(10)=0xa,,需要补0,把它变成Ox0a
def changergb(x):if len(x)==3:x='0x0'+x[-1]return(x)
for y in range(1,height-1):for x in range(1,width-1):rgb=im.getpixel((x,y))#print(rgb[0],rgb[1],rgb[2])r=changergb(hex(rgb[0]))g = changergb(hex(rgb[1]))b = changergb(hex(rgb[2]))cellcolor = (r + g + b).replace('0x', '')#print(cellcolor)rgb=str(rgb)fill = PatternFill("solid", fgColor=cellcolor)demo.cell(row=y, column=x).value=rgb[1:-1]#向单元格写入rgb值,其实已经没必要,可以注释掉demo.cell(row=y, column=x).fill=fill#想单元格设置填充值
xls.save(filename='tiananmenguangchagn.xlsx')
最后用pyinstaller将这些代码打包成了一个exe文件,不需要安装python啥的就能直接使用转化,就是有点大(60m左右)感兴趣的人可以自行提取 链接:https://pan.baidu.com/s/1PZS_5mztMoCXkSLrRJ6tmw
提取码:1chb
python利用PIL及openpyxl实现图片转为excel表格相关推荐
- 电脑将图片转为excel表格的几种常用方法
一.用金鸣表格文字识别在线网页版: 1.打开金鸣表格文字识别(简称金鸣识别)网站. 2.点击"点此添加图片/PDF",将待识别的门脸图片添加进去. 3.点击"提交识别&q ...
- 用电脑将图片转为excel表格有几种方法?怎么操作?
将图片转为Excel表格,一般需要借助OCR(光学字符识别)技术.OCR技术可以将图片中的文字提取出来,并转换成Excel表格中的数据.以下是几种常用的方法: 一..使用在线OCR工具 1.打开金鸣表 ...
- Python 利用PIL将图片转为字符
Python 利用PIL将图片转为字符 PIL(Python Imaging Library)是Python语言的一个图像处理库,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,而 ...
- python 利用 PIL 将数组值转成图片/python利用h5py、pyhdf读取.h5、.hdf文件信息
python 利用 PIL 将数组值转成图片 安装 PIL 包 pip install pillow 将二维数据转换成单通道图片 from PIL import Image arr=numpy.asa ...
- pil库修改图片大小_python 利用PIL库进行更改图片大小的操作
python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...
- 新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)
文章目录 一.问题:图片导入Unity被调整成2的N次方 二.设置不转换成2的N次方 三.使用ETC压缩格式,图片宽高必须是4的倍数 四.使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍 ...
- python怎么将txt转为excel_使用matlab或python将txt文件转为excel表格
假设txt文件为: 一.matlab代码 data=importdata('data.txt'); xlswrite('data.xls',data); 二.python代码 利用pandas的Dat ...
- 【python】txt记事本转为excel表格,超快超方便
txt记事本转为excel表格,太简单啦!!! 使用python将txt格式转化为xls,火箭般的速度,就转化好了!!! 完整代码: # -*- encoding: utf-8 -*- import ...
- 图片转excel表格怎么弄的呢?这三个方法让你实现图片转表格
你们在工作的时候,会不会出现这种情况,同事发来一张表格照片,需要你统计里面的数据,但是一个个填写的话,效率实在是太慢了.那有什么方法可以让我们快速处理呢?我们可以利用软件帮助我们解决这一问题.那图片转 ...
- python xlrd安装_详解python中xlrd包的安装与处理Excel表格
一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...
最新文章
- semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
- python培训深圳-深圳哪家python培训班比较靠谱
- hdu4882 水贪心
- Vue——vue-chartjs[Vue 对于 Chart.js 的封装]
- 【ASP.NET】判断访问网站的客户端是PC还是手机
- ASP.NET MVC 入门6、TempData
- host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析
- Halcon和Visionpro的对比
- 通信恩仇,5G江湖(转)
- 金蝶KIS迷你版、标准版年结注意事项!!
- [33期] 穿越地平线的渴望
- 【多式联运】基于模拟退火优化遗传算法求解多式联运运输问题(含碳政策)含Matlab代码
- 怎么绘制对数函数图象
- 阿里巴巴资深DBA的职业生涯总结
- /sys/class/gpio 操作方法
- 如何使用css实现三角形?
- C++ Problems
- 即将开学,为校园网络安全助力
- 计算机控制试卷中南大学,中南大学计算机控制技术模拟试卷.doc
- Word的脚注加方括号的问题解法