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之Python安装
Sep 12 Python
用于统计项目中代码总行数的Python脚本分享
Apr 21 Python
浅谈python中copy和deepcopy中的区别
Oct 23 Python
Python探索之修改Python搜索路径
Oct 25 Python
python3写爬取B站视频弹幕功能
Dec 22 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
Aug 31 Python
python使用 cx_Oracle 模块进行查询操作示例
Nov 28 Python
浅谈django 重载str 方法
May 19 Python
keras导入weights方式
Jun 12 Python
浅谈Python中的继承
Jun 19 Python
如何利用python检测图片是否包含二维码
Oct 15 Python
Python opencv缺陷检测的实现及问题解决
Apr 24 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
上海无线电三厂简史修改版
2021/03/01 无线电
第十二节 类的自动加载 [12]
2006/10/09 PHP
基于header的一些常用指令详解
2013/06/06 PHP
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
javascript firefox不显示本地预览图片问题的解决方法
2008/11/12 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
IE6下通过a标签点击切换图片的问题
2010/11/14 Javascript
js判断选择时间不能小于当前时间的示例代码
2013/09/24 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
html的DOM中document对象anchors集合用法实例
2015/01/21 Javascript
Dropzone.js实现文件拖拽上传功能(附源码下载)
2016/11/22 Javascript
Vue异步组件使用详解
2017/04/08 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
JS去掉字符串末尾的标点符号及删除最后一个字符的方法
2017/10/24 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
vue3.0 CLI - 2.5 - 了解组件的三维
2018/09/14 Javascript
jQuery AJAX应用实例总结
2020/05/19 jQuery
JS sort排序详细使用方法示例解析
2020/09/27 Javascript
Python中变量交换的例子
2014/08/25 Python
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
快速入手Python字符编码
2016/08/03 Python
Python中list查询及所需时间计算操作示例
2018/06/21 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
python django下载大的csv文件实现方法分析
2019/07/19 Python
Python爬取12306车次信息代码详解
2020/08/12 Python
北京泡泡网网络有限公司.net面试题
2012/07/17 面试题
大学班级干部的自我评价分享
2014/02/10 职场文书
售后服务承诺书怎么写
2014/05/21 职场文书
酒后驾车标语
2014/06/30 职场文书
2014县政府领导班子对照检查材料思想汇报
2014/09/25 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年组织部工作总结
2014/11/14 职场文书
西游降魔篇观后感
2015/06/15 职场文书
2016年119消防宣传日活动总结
2016/04/05 职场文书
详解redis分布式锁的这些坑
2021/05/19 Redis
Debian11 Xfce终端光标的颜色怎么设置?
2022/08/14 数码科技