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 socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
python中正则表达式的使用详解
Oct 17 Python
对于Python中线程问题的简单讲解
Apr 03 Python
实例讲解Python设计模式编程之工厂方法模式的使用
Mar 02 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
python and or用法详解
Jun 26 Python
Python实现TCP通信的示例代码
Sep 09 Python
pycharm显示远程图片的实现
Nov 04 Python
Python迷宫生成和迷宫破解算法实例
Dec 24 Python
python 解决tqdm模块不能单行显示的问题
Feb 19 Python
windows安装python超详细图文教程
May 21 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 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中函数内引用全局变量的方法
2008/10/20 PHP
php实现字符串首字母转换成大写的方法
2015/03/17 PHP
php语言中使用json的技巧及json的实现代码详解
2015/10/27 PHP
php运行报错Call to undefined function curl_init()的最新解决方法
2016/11/20 PHP
PHP 实现 WebSocket 协议原理与应用详解
2020/04/22 PHP
jQuery消息提示框插件Tipso
2015/05/04 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
jQuery 3.0十大新特性
2016/07/06 Javascript
浅谈jQuery中ajaxPrefilter的应用
2016/08/01 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
jQuery Ajax使用FormData对象上传文件的方法
2016/09/07 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
Vue入门之animate过渡动画效果
2018/04/08 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
javascript中的with语句学习笔记及用法
2020/02/17 Javascript
python目录操作之python遍历文件夹后将结果存储为xml
2014/01/27 Python
Python遍历目录并批量更换文件名和目录名的方法
2016/09/19 Python
Python编程修改MP3文件名称的方法
2017/04/19 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
浅析python继承与多重继承
2018/09/13 Python
python多进程下实现日志记录按时间分割
2019/07/22 Python
Python基于jieba, wordcloud库生成中文词云
2020/05/13 Python
python调用私有属性的方法总结
2020/07/24 Python
python使用列表的最佳方案
2020/08/12 Python
Python连接mysql方法及常用参数
2020/09/01 Python
python中的yield from语法快速学习
2020/11/06 Python
python3爬虫中引用Queue的实例讲解
2020/11/24 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
奥地利网上现代灯具和灯饰店:Lampenwelt.at
2018/01/29 全球购物
内容编辑个人求职信
2013/12/10 职场文书
美容院考勤制度
2014/01/30 职场文书
中学自我评价
2014/01/31 职场文书
《他得的红圈圈最多》教学反思
2014/04/24 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
IIS服务器中设置HTTP重定向访问HTTPS
2022/04/29 Servers