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技能之数据导出excel的实例代码
Aug 11 Python
微信跳一跳小游戏python脚本
Jan 05 Python
Django权限机制实现代码详解
Feb 05 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
python 实现矩阵上下/左右翻转,转置的示例
Jan 23 Python
简单了解django缓存方式及配置
Jul 19 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
Aug 30 Python
基于python实现雪花算法过程详解
Nov 16 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
关于Python字符串显示u...的解决方式
Mar 06 Python
Python实现socket库网络通信套接字
Jun 04 Python
Pytorch反向传播中的细节-计算梯度时的默认累加操作
Jun 05 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简单实现加减乘除计算器
2014/01/06 PHP
php判断正常访问和外部访问的示例
2014/02/10 PHP
php微信开发自定义菜单
2016/08/27 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
深入理解JavaScript系列(35):设计模式之迭代器模式详解
2015/03/03 Javascript
浅谈js中的引用和复制(传值和传址)
2016/09/18 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
es6系列教程_ Map详解以及常用api介绍
2017/09/25 Javascript
详解VUE 数组更新
2017/12/16 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
浅谈vuex中store的命名空间
2019/11/08 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
Vue如何循环提取对象数组中的值
2020/11/18 Vue.js
[01:11]回顾历届DOTA2国际邀请赛中国区预选赛
2017/06/26 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
Python 2.7.x 和 3.x 版本的重要区别小结
2014/11/28 Python
利用python获取某年中每个月的第一天和最后一天
2016/12/15 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
PyQt5 pyqt多线程操作入门
2018/05/05 Python
详解python中@的用法
2019/03/27 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
Django使用unittest模块进行单元测试过程解析
2019/08/02 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
英国马莎百货印度官网:Marks & Spencer印度
2020/10/08 全球购物
地球一小时宣传标语
2014/06/24 职场文书
质量月活动总结
2014/08/26 职场文书
就业推荐表导师评语
2014/12/31 职场文书
525心理健康活动总结
2015/05/08 职场文书
MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决
2022/12/24 MySQL