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操作Word批量生成文章的方法
Jul 28 Python
Python结巴中文分词工具使用过程中遇到的问题及解决方法
Apr 15 Python
TensorFlow saver指定变量的存取
Mar 10 Python
Python实战之制作天气查询软件
May 14 Python
Django ORM 聚合查询和分组查询实现详解
Aug 09 Python
python使用requests.session模拟登录
Aug 09 Python
python opencv调用笔记本摄像头
Aug 28 Python
pytorch 指定gpu训练与多gpu并行训练示例
Dec 31 Python
详解python 降级到3.6终极解决方案
Feb 06 Python
python接入支付宝的实例操作
Jul 20 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
Nov 20 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 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
打造计数器DIY三步曲(上)
2006/10/09 PHP
用PHP为SHOPEX增加日志功能代码
2010/07/02 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
php检测url是否存在的方法
2015/04/14 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
Jquery插件 easyUI属性汇总
2011/01/19 Javascript
javascript中删除指定数组中指定的元素的代码
2011/02/12 Javascript
Javascript表单验证要注意的事项
2014/09/29 Javascript
javascript实现简单的进度条
2015/07/02 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记6)
2015/12/20 Javascript
jQuery简单实现彩色云标签效果示例
2016/08/01 Javascript
jquery根据一个值来选中select下的option实例代码
2016/08/29 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
jQuery实现两个select控件的互移操作
2016/12/22 Javascript
详解webpack es6 to es5支持配置
2017/05/04 Javascript
AngularJS实现单一页面内设置跳转路由的方法
2017/06/28 Javascript
详解vue项目首页加载速度优化
2017/10/18 Javascript
解决vue build打包之后首页白屏的问题
2018/03/06 Javascript
Vue+Koa2+mongoose写一个像素绘板的实现方法
2019/09/10 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
VSCode写vue项目一键生成.vue模版,修改定义其他模板的方法
2020/04/17 Javascript
[01:06:07]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS CIS
2014/05/22 DOTA
[04:31]2016国际邀请赛中国区预选赛妖精采访
2016/06/27 DOTA
python文件操作相关知识点总结整理
2016/02/22 Python
Python多进程写入同一文件的方法
2019/01/14 Python
Python笔试面试题小结
2019/09/07 Python
python实现翻译word表格小程序
2020/02/27 Python
python 模块导入问题汇总
2021/02/01 Python
HTML5之消息通知的使用(Web Notification)
2018/10/30 HTML / CSS
描述Cookie和Session的作用,区别和各自的应用范围,Session工作原理
2015/03/25 面试题
毕业生自荐信
2013/12/14 职场文书
业绩考核岗位职责
2014/02/01 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
python自动化八大定位元素讲解
2021/07/09 Python