最开始是看了一个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表格相关推荐

  1. 电脑将图片转为excel表格的几种常用方法

    一.用金鸣表格文字识别在线网页版: 1.打开金鸣表格文字识别(简称金鸣识别)网站. 2.点击"点此添加图片/PDF",将待识别的门脸图片添加进去. 3.点击"提交识别&q ...

  2. 用电脑将图片转为excel表格有几种方法?怎么操作?

    将图片转为Excel表格,一般需要借助OCR(光学字符识别)技术.OCR技术可以将图片中的文字提取出来,并转换成Excel表格中的数据.以下是几种常用的方法: 一..使用在线OCR工具 1.打开金鸣表 ...

  3. Python 利用PIL将图片转为字符

    Python 利用PIL将图片转为字符 PIL(Python Imaging Library)是Python语言的一个图像处理库,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,而 ...

  4. python 利用 PIL 将数组值转成图片/python利用h5py、pyhdf读取.h5、.hdf文件信息

    python 利用 PIL 将数组值转成图片 安装 PIL 包 pip install pillow 将二维数据转换成单通道图片 from PIL import Image arr=numpy.asa ...

  5. pil库修改图片大小_python 利用PIL库进行更改图片大小的操作

    python 是可以利用PIL库进行更改图片大小的操作的,当然一般情况下是不需要的,但是在一些特殊的利用场合,是需要改变图片的灰度或是大小等的操作的,其实用python更改图片的大小还是蛮简单的,只需 ...

  6. 新发的日常小实验——使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍数(Unity、PIL、Pillow、压缩)

    文章目录 一.问题:图片导入Unity被调整成2的N次方 二.设置不转换成2的N次方 三.使用ETC压缩格式,图片宽高必须是4的倍数 四.使用python的PIL库批量修改图片尺寸,确保宽和高是4的倍 ...

  7. python怎么将txt转为excel_使用matlab或python将txt文件转为excel表格

    假设txt文件为: 一.matlab代码 data=importdata('data.txt'); xlswrite('data.xls',data); 二.python代码 利用pandas的Dat ...

  8. 【python】txt记事本转为excel表格,超快超方便

    txt记事本转为excel表格,太简单啦!!! 使用python将txt格式转化为xls,火箭般的速度,就转化好了!!! 完整代码: # -*- encoding: utf-8 -*- import ...

  9. 图片转excel表格怎么弄的呢?这三个方法让你实现图片转表格

    你们在工作的时候,会不会出现这种情况,同事发来一张表格照片,需要你统计里面的数据,但是一个个填写的话,效率实在是太慢了.那有什么方法可以让我们快速处理呢?我们可以利用软件帮助我们解决这一问题.那图片转 ...

  10. python xlrd安装_详解python中xlrd包的安装与处理Excel表格

    一.安装xlrd 地址 下载后,使用 pip install .whl安装即好. 查看帮助: >>> import xlrd >>> help(xlrd) Help ...

最新文章

  1. semilogx 多条曲线_怎么让两个指数在一个坐标,matlab里怎样一个坐标上显示多个曲线,而且横轴要用指数形式的?谢谢...
  2. python培训深圳-深圳哪家python培训班比较靠谱
  3. hdu4882 水贪心
  4. Vue——vue-chartjs[Vue 对于 Chart.js 的封装]
  5. 【ASP.NET】判断访问网站的客户端是PC还是手机
  6. ASP.NET MVC 入门6、TempData
  7. host 端口_如何让多端口网站用一个nginx进行反向代理实际场景分析
  8. Halcon和Visionpro的对比
  9. 通信恩仇,5G江湖(转)
  10. 金蝶KIS迷你版、标准版年结注意事项!!
  11. [33期] 穿越地平线的渴望
  12. 【多式联运】基于模拟退火优化遗传算法求解多式联运运输问题(含碳政策)含Matlab代码
  13. 怎么绘制对数函数图象
  14. 阿里巴巴资深DBA的职业生涯总结
  15. /sys/class/gpio 操作方法
  16. 如何使用css实现三角形?
  17. C++ Problems
  18. 即将开学,为校园网络安全助力
  19. 计算机控制试卷中南大学,中南大学计算机控制技术模拟试卷.doc
  20. Word的脚注加方括号的问题解法

热门文章

  1. 如果报华为网络工程师中级培训班一般学费多少?
  2. 自己如何选购更换内存条?(超详细)
  3. ROS串口通信协议解析
  4. 【EMD和EEMD】EEMD工具箱使用
  5. 电机矢量控制(霍尔位置传感器)
  6. 怎么设置访问服务器文件夹权限凭据,Windows server 共享文件夹权限设置
  7. plsql 登录提示 丢失msvcr71.dll
  8. mybats-puls---条件构造器Wrapper,插件扩展,SQL注入器,公共字段填充
  9. 中债估值 收益率_收债
  10. laravel 框架使用hdjs 实现单图上传功能