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异步任务队列示例
Apr 01 Python
Python通过websocket与js客户端通信示例分析
Jun 25 Python
python实现在windows下操作word的方法
Apr 28 Python
Python常用小技巧总结
Jun 01 Python
用不到50行的Python代码构建最小的区块链
Nov 16 Python
Centos 升级到python3后pip 无法使用的解决方法
Jun 12 Python
python实现C4.5决策树算法
Aug 29 Python
Python实现判断一个整数是否为回文数算法示例
Mar 02 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
Python&&GDAL实现NDVI的计算方式
Jan 09 Python
python库skimage给灰度图像染色的方法示例
Apr 27 Python
python反扒机制的5种解决方法
Feb 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
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
提高PHP性能的编码技巧以及性能优化详细解析
2013/08/24 PHP
Yii中表单用法实例详解
2016/01/05 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
JS函数重载的解决方案
2014/05/13 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
jQuery通过改变input的type属性实现密码显示隐藏切换功能
2017/02/08 Javascript
JavaScript ES6中const、let与var的对比详解
2017/06/18 Javascript
解决vue router使用 history 模式刷新后404问题
2017/07/19 Javascript
vue服务端渲染的实例代码
2017/08/28 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
Javasript设计模式之链式调用详解
2018/04/26 Javascript
基于Angular中ng-controller父子级嵌套的相关属性详解
2018/10/08 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
微信小程序—setTimeOut定时器的问题及解决
2019/07/26 Javascript
Layer.js实现表格溢出内容省略号显示,悬停显示全部的方法
2019/09/16 Javascript
Nodejs使用archiver-zip-encrypted库加密压缩文件时报错(解决方案)
2019/11/18 NodeJs
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
python实现监控linux性能及进程消耗性能的方法
2014/07/25 Python
Python 爬虫模拟登陆知乎
2016/09/23 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
Django网络框架之HelloDjango项目创建教程
2019/06/06 Python
python隐藏终端执行cmd命令的方法
2019/06/24 Python
python 二维矩阵转三维矩阵示例
2019/11/30 Python
python不同系统中打开方法
2020/06/23 Python
用sleep间隔进行python反爬虫的实例讲解
2020/11/30 Python
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
.NET现在共支持多少种语言
2014/02/26 面试题
信息专业大学生自我评价分享
2014/01/17 职场文书
美术国培研修感言
2014/02/12 职场文书
绩效管理实施方案
2014/03/19 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2022年四月新番
2022/03/15 日漫