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 相关文章推荐
在Django的模型和公用函数中使用惰性翻译对象
Jul 27 Python
使用Python来编写HTTP服务器的超级指南
Feb 18 Python
Windows下搭建python开发环境详细步骤
Jul 20 Python
python实现FTP服务器服务的方法
Apr 11 Python
浅谈pandas中shift和diff函数关系
Apr 08 Python
python:print格式化输出到文件的实例
May 14 Python
django从请求到响应的过程深入讲解
Aug 01 Python
Python3内置函数chr和ord实现进制转换
Jun 05 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
如何利用python读取micaps文件详解
Oct 18 Python
python小技巧——将变量保存在本地及读取
Nov 13 Python
Python基础之hashlib模块详解
May 06 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
CI框架装载器Loader.php源码分析
2014/11/04 PHP
php实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
2010/02/07 Javascript
jQuery学习7 操作JavaScript对象和集合的函数
2010/02/07 Javascript
基于jQuery实现左右div自适应高度完全相同的代码
2012/08/09 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
jQuery里filter()函数与find()函数用法分析
2015/06/24 Javascript
jquery trigger实现联动的方法
2016/02/29 Javascript
vue构建单页面应用实战
2017/04/10 Javascript
js使用xml数据载体实现城市省份二级联动效果
2017/11/08 Javascript
bootstrap 弹出框modal添加垂直方向滚轴效果
2018/07/09 Javascript
node.js实现简单的压缩/解压缩功能示例
2019/11/05 Javascript
vue项目中使用bpmn为节点添加颜色的方法
2020/04/30 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
python http基本验证方法
2018/12/26 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
python tkinter 设置窗口大小不可缩放实例
2020/03/04 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
详解CSS3 Media Queries中媒体属性的使用
2016/02/29 HTML / CSS
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
美国知名的百货清仓店:Neiman Marcus Last Call
2016/08/03 全球购物
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
Linux常见面试题
2016/10/04 面试题
医院护士求职自荐信格式
2013/09/21 职场文书
员工年终演讲稿
2014/01/03 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
装配车间主任岗位职责
2015/04/08 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
小学班长竞选稿
2015/11/20 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
Vue.js中v-for指令的用法介绍
2022/03/13 Vue.js
python垃圾回收机制原理分析
2022/04/13 Python