python读取图片颜色值并生成excel像素画的方法实例


Posted in Python onFebruary 19, 2021

像素画:

python读取图片颜色值并生成excel像素画的方法实例

需要用到的包:

进度条:progressbar

pip install progressbar -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

excel:操作包openpyxl

pip install openpyxl -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

食用指南:

文件目录:

python读取图片颜色值并生成excel像素画的方法实例

运行:

进入程序img2excel_user.py 所在目录,输入:

python img2excel_user.py 图片地址 excel保存地址(要加上excel名字)

例如:

python img2excel_user.py D:\myPythonProgram\img2excel\3.jpg D:\myPythonProgram\img2excel\3.xlsx

注意:

进入二级目录的方法:cd .\文件夹名

python读取图片颜色值并生成excel像素画的方法实例

若图片太大,生成的文件会打不开,所以准备的图片不能太大:

python读取图片颜色值并生成excel像素画的方法实例

源码:

# -*- coding: utf-8 -*-

from PIL import Image
import openpyxl
import openpyxl.styles
from openpyxl.styles import PatternFill
from openpyxl.utils import get_column_letter
from progressbar import *

def RGB_to_Hex(rgb):
 """
 RGB颜色转换成16进制颜色
 :param rgb:
 :return:
 """
 RGB = rgb.split(',') # 将RGB格式划分开来
 color = ''
 for i in RGB:
 num = int(i)
 # 将R、G、B分别转化为16进制拼接转换并大写 hex() 函数用于将10进制整数转换成16进制,以字符串形式表示
 color += str(hex(num))[-2:].replace('x', '0').upper()
 return color

def img2excel(img_path,excelout_path):
 """
 图片转换成excel
 :param img_path: 图片地址
 :param excelout_path: excel保存地址
 :return:
 """
 img_src = Image.open(img_path)
 #宽高
 img_width=img_src.size[0]
 img_height=img_src.size[1]
 print("图片宽%s,高%s"%(img_width,img_height))
 # 类型
 # print(img_src.mode)
 if img_src.mode != "RGB":
 img_src = img_src.convert('RGB')

 str_strlist = img_src.load()
 wb=openpyxl.Workbook()
 wb.save(excelout_path)
 wb=openpyxl.load_workbook(excelout_path)
 sheet=wb["Sheet"]
 sheet.title="img2excel"
 cell_width = 1.0
 cell_height = cell_width * (2.2862 / 0.3612)
 print("正在疯狂生成excel,请耐心等待...")
 #进度条
 widgets=['进度:',Percentage(),'',Bar('#'),'',Timer(),' ', ETA(), ' ']
 pb=ProgressBar(widgets=widgets)
 for w in pb(range(img_width)):
 for h in range(img_height):
 data = str_strlist[w,h]
 # 把元组rgb颜色变成字符串,转换成16进制颜色(1,2,3)-->'1,2,3'
 color=str(data).replace("(","").replace(")","")
 #16进制的颜色,不带前面#号的,要#自己拼接到color前面即可
 color=RGB_to_Hex(color)
 # 设置填充颜色为color,solid参数表示填充实色
 fille=PatternFill("solid",fgColor=color)
 sheet.cell(h+1,w+1).fill=fille
 print("生成完成,正在设置单元格格式...")
 for i in range(1, sheet.max_row+1):
 sheet.row_dimensions[i].height=cell_height
 for i in range(1, sheet.max_column+1):
 sheet.column_dimensions[get_column_letter(i)].width = cell_width
 print('格式设置完成,正在保存excel...')
 wb.save(excelout_path)
 img_src.close()
 print("保存excel成功!请打开[%s]查看"%excelout_path)



if __name__=='__main__':
 import sys,os
 if len(sys.argv)!=3:
 print("请输入图片地址和excel保存的地址\n"
 "例如命令行输入 python img2excel_user.py D:/result.png D:/outExcel.xlsx")
 sys.exit(0)
 else:
 img_virify=['.jpg','.png','.gif','.bmp','.jpeg','.jpe','.jfif']
 excel_virify=['.xlsx','.xlsm','.xltx','.xltm']

 # 图片地址
 img_path=sys.argv[1]
 # excel保存地址
 excelout_path=sys.argv[2]

 endName=os.path.splitext(img_path)
 if endName[1] not in img_virify:
 print("请选择支持的图片类型",img_virify)
 sys.exit(0)

 endName_excel=os.path.splitext(excelout_path)
 if endName_excel[1] not in excel_virify:
 print("excel 格式不支持,请选择支持的格式",excel_virify)
 sys.exit(0)
 img2excel(r""+img_path+"",excelout_path)

运行:

python读取图片颜色值并生成excel像素画的方法实例

原图:

python读取图片颜色值并生成excel像素画的方法实例

效果图:

python读取图片颜色值并生成excel像素画的方法实例

python读取图片颜色值并生成excel像素画的方法实例
python读取图片颜色值并生成excel像素画的方法实例

总结

到此这篇关于python读取图片颜色值并生成excel像素画的文章就介绍到这了,更多相关python读取图片颜色值生成excel像素画内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python FTP操作类代码分享
May 13 Python
Python生成随机MAC地址
Mar 10 Python
Python实现的数据结构与算法之基本搜索详解
Apr 22 Python
Python实现大文件排序的方法
Jul 10 Python
python开发之字符串string操作方法实例详解
Nov 12 Python
Python装饰器入门学习教程(九步学习)
Jan 28 Python
python最长回文串算法
Jun 04 Python
Sanic框架基于类的视图用法示例
Jul 18 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
Python PyInstaller安装和使用教程详解
Jan 08 Python
python为QT程序添加图标的方法详解
Mar 09 Python
浅谈matplotlib中FigureCanvasXAgg的用法
Jun 16 Python
python 基于DDT实现数据驱动测试
Feb 18 #Python
详解解决jupyter不能使用pytorch的问题
Feb 18 #Python
python 使用openpyxl读取excel数据
Feb 18 #Python
Python用SSH连接到网络设备
Feb 18 #Python
python 实现IP子网计算
Feb 18 #Python
详解python3 GUI刷屏器(附源码)
Feb 18 #Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
Feb 18 #Python
You might like
PHP出错界面
2006/10/09 PHP
综合图片计数器
2006/10/09 PHP
php文件怎么打开 如何执行php文件
2011/12/21 PHP
php explode函数实例代码
2012/02/27 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
2015/12/17 PHP
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
jQuery代码优化 选择符篇
2011/11/01 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
浅谈jquery采用attr修改form表单enctype不起作用的问题
2016/11/25 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
微信小程序 wx:for的使用实例详解
2017/04/27 Javascript
深入了解JavaScript 私有化
2019/05/30 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
生成无限制的微信小程序码的示例代码
2019/09/20 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
Python实现从百度API获取天气的方法
2015/03/11 Python
Python计时相关操作详解【time,datetime】
2017/05/26 Python
JPype实现在python中调用JAVA的实例
2017/07/19 Python
批量将ppt转换为pdf的Python代码 只要27行!
2018/02/26 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
Python3 虚拟开发环境搭建过程(图文详解)
2020/01/06 Python
详解css3自定义滚动条样式写法
2017/12/25 HTML / CSS
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
瑞士灯具购物网站:Lampenwelt.ch
2018/07/08 全球购物
英国最大的在线时尚眼镜店:Eyewearbrands
2019/03/12 全球购物
卫校护理专业毕业生求职信
2013/11/26 职场文书
婚纱摄影师求职信范文
2014/04/17 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
2015年党员自评材料
2014/12/17 职场文书
锅炉工岗位职责
2015/02/13 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
nginx location优先级的深入讲解
2021/03/31 Servers
MySQL大小写敏感的注意事项
2021/05/24 MySQL
win11高清晰音频管理器在哪里?win11找不到高清晰音频管理器解决办法
2022/04/08 数码科技