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和OpenCV库将URL转换为OpenCV格式的方法
Mar 27 Python
python中OrderedDict的使用方法详解
May 05 Python
深入理解Python单元测试unittest的使用示例
Nov 18 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 Python
Mac安装python3的方法步骤
Aug 09 Python
python Dijkstra算法实现最短路径问题的方法
Sep 19 Python
Python获取统计自己的qq群成员信息的方法
Nov 15 Python
python 引用传递和值传递详解(实参,形参)
Jun 05 Python
python 调用API接口 获取和解析 Json数据
Sep 28 Python
基于Python爬取京东双十一商品价格曲线
Oct 23 Python
Python try except finally资源回收的实现
Jan 25 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中使用session防止用户非法登录后台的方法
2015/01/27 PHP
利用PHP生成CSV文件简单示例
2016/12/21 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
新老版本juqery获取radio对象的方法
2010/03/01 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
2011/09/26 Javascript
Javascript级联下拉菜单以及AJAX数据验证核心代码
2013/05/10 Javascript
jquery自定义滚动条插件示例分享
2014/02/21 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
DOM 事件流详解
2015/01/20 Javascript
javascript版2048小游戏
2015/03/18 Javascript
原生js实现自由拖拽弹窗代码demo
2016/06/29 Javascript
Vue-Router进阶之滚动行为详解
2017/09/13 Javascript
vue 实现axios拦截、页面跳转和token 验证
2018/07/17 Javascript
javascript系统时间设置操作示例
2019/06/17 Javascript
基于node+vue实现简单的WebSocket聊天功能
2020/02/01 Javascript
在vue中获取wangeditor的html和text的操作
2020/10/23 Javascript
[01:18:35]DOTA2-DPC中国联赛 正赛 Elephant vs LBZS BO3 第一场 1月29日
2021/03/11 DOTA
Python中的with...as用法介绍
2015/05/28 Python
简单了解什么是神经网络
2017/12/23 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
python自动化测试之如何解析excel文件
2019/06/27 Python
python3 线性回归验证方法
2019/07/09 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
荷兰皇家航空公司官方网站:KLM Royal Dutch Airlines
2017/12/07 全球购物
微软瑞士官方网站:Microsoft瑞士
2018/04/20 全球购物
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
房地产管理毕业生自荐信
2013/11/04 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
倡议书格式范文
2014/04/14 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
爱耳日宣传活动总结
2014/07/05 职场文书
普通党员个人对照检查材料
2014/09/18 职场文书
六年级小学生评语
2014/12/26 职场文书
2015年前台文员工作总结
2015/05/18 职场文书
教师节联欢会主持词
2015/07/04 职场文书
mysql事务对效率的影响分析总结
2021/10/24 MySQL