服务器之家

服务器之家 > 正文

python读取图片颜色值并生成excel像素画的方法实例

时间:2021-09-06 00:09     来源/作者:一个超会写Bug的安太狼

像素画:

python读取图片颜色值并生成excel像素画的方法实例

需要用到的包:

进度条:progressbar

  1. pip install progressbar -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

excel:操作包openpyxl

  1. pip install openpyxl -i http://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com

食用指南:

文件目录:

python读取图片颜色值并生成excel像素画的方法实例

运行:

进入程序img2excel_user.py 所在目录,输入:

  1. python img2excel_user.py 图片地址 excel保存地址(要加上excel名字)

例如:

  1. python img2excel_user.py D:\myPythonProgram\img2excel\3.jpg D:\myPythonProgram\img2excel\3.xlsx

注意:

进入二级目录的方法:cd .\文件夹名

python读取图片颜色值并生成excel像素画的方法实例

若图片太大,生成的文件会打不开,所以准备的图片不能太大:

python读取图片颜色值并生成excel像素画的方法实例

源码:

  1. # -*- coding: utf-8 -*-
  2.  
  3. from PIL import Image
  4. import openpyxl
  5. import openpyxl.styles
  6. from openpyxl.styles import PatternFill
  7. from openpyxl.utils import get_column_letter
  8. from progressbar import *
  9.  
  10. def RGB_to_Hex(rgb):
  11. """
  12. RGB颜色转换成16进制颜色
  13. :param rgb:
  14. :return:
  15. """
  16. RGB = rgb.split(',') # 将RGB格式划分开来
  17. color = ''
  18. for i in RGB:
  19. num = int(i)
  20. # 将R、G、B分别转化为16进制拼接转换并大写 hex() 函数用于将10进制整数转换成16进制,以字符串形式表示
  21. color += str(hex(num))[-2:].replace('x', '0').upper()
  22. return color
  23.  
  24. def img2excel(img_path,excelout_path):
  25. """
  26. 图片转换成excel
  27. :param img_path: 图片地址
  28. :param excelout_path: excel保存地址
  29. :return:
  30. """
  31. img_src = Image.open(img_path)
  32. #宽高
  33. img_width=img_src.size[0]
  34. img_height=img_src.size[1]
  35. print("图片宽%s,高%s"%(img_width,img_height))
  36. # 类型
  37. # print(img_src.mode)
  38. if img_src.mode != "RGB":
  39. img_src = img_src.convert('RGB')
  40.  
  41. str_strlist = img_src.load()
  42. wb=openpyxl.Workbook()
  43. wb.save(excelout_path)
  44. wb=openpyxl.load_workbook(excelout_path)
  45. sheet=wb["Sheet"]
  46. sheet.title="img2excel"
  47. cell_width = 1.0
  48. cell_height = cell_width * (2.2862 / 0.3612)
  49. print("正在疯狂生成excel,请耐心等待...")
  50. #进度条
  51. widgets=['进度:',Percentage(),'',Bar('#'),'',Timer(),' ', ETA(), ' ']
  52. pb=ProgressBar(widgets=widgets)
  53. for w in pb(range(img_width)):
  54. for h in range(img_height):
  55. data = str_strlist[w,h]
  56. # 把元组rgb颜色变成字符串,转换成16进制颜色(1,2,3)-->'1,2,3'
  57. color=str(data).replace("(","").replace(")","")
  58. #16进制的颜色,不带前面#号的,要#自己拼接到color前面即可
  59. color=RGB_to_Hex(color)
  60. # 设置填充颜色为color,solid参数表示填充实色
  61. fille=PatternFill("solid",fgColor=color)
  62. sheet.cell(h+1,w+1).fill=fille
  63. print("生成完成,正在设置单元格格式...")
  64. for i in range(1, sheet.max_row+1):
  65. sheet.row_dimensions[i].height=cell_height
  66. for i in range(1, sheet.max_column+1):
  67. sheet.column_dimensions[get_column_letter(i)].width = cell_width
  68. print('格式设置完成,正在保存excel...')
  69. wb.save(excelout_path)
  70. img_src.close()
  71. print("保存excel成功!请打开[%s]查看"%excelout_path)
  72.  
  73. if __name__=='__main__':
  74. import sys,os
  75. if len(sys.argv)!=3:
  76. print("请输入图片地址和excel保存的地址\n"
  77. "例如命令行输入 python img2excel_user.py D:/result.png D:/outExcel.xlsx")
  78. sys.exit(0)
  79. else:
  80. img_virify=['.jpg','.png','.gif','.bmp','.jpeg','.jpe','.jfif']
  81. excel_virify=['.xlsx','.xlsm','.xltx','.xltm']
  82.  
  83. # 图片地址
  84. img_path=sys.argv[1]
  85. # excel保存地址
  86. excelout_path=sys.argv[2]
  87.  
  88. endName=os.path.splitext(img_path)
  89. if endName[1] not in img_virify:
  90. print("请选择支持的图片类型",img_virify)
  91. sys.exit(0)
  92.  
  93. endName_excel=os.path.splitext(excelout_path)
  94. if endName_excel[1] not in excel_virify:
  95. print("excel 格式不支持,请选择支持的格式",excel_virify)
  96. sys.exit(0)
  97. img2excel(r""+img_path+"",excelout_path)

运行:

python读取图片颜色值并生成excel像素画的方法实例

原图:

python读取图片颜色值并生成excel像素画的方法实例

效果图:

python读取图片颜色值并生成excel像素画的方法实例

python读取图片颜色值并生成excel像素画的方法实例
python读取图片颜色值并生成excel像素画的方法实例

总结

到此这篇关于python读取图片颜色值并生成excel像素画的文章就介绍到这了,更多相关python读取图片颜色值生成excel像素画内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/m0_46278037/article/details/113837409

相关文章

热门资讯

yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
2021年耽改剧名单 2021要播出的59部耽改剧列表
2021年耽改剧名单 2021要播出的59部耽改剧列表 2021-03-05
返回顶部