Python3,19行代码,我把她的照片写入到Excel中,2022年伊始,她终于被我感动了。

2023-11-08

1、引言

小屌丝:鱼哥,新年快乐~ ~
小鱼:新年快乐,小屌丝,虽然是元旦,但是也算是迈入新的一年了,也该有新的形象了。
小屌丝:鱼哥,你说的没错啊,新的一年,我要用新的姿势去追妹子。
小鱼:… 怎么三句不说妹子,你无话可说了??
小屌丝:妹子是我提升技术的动力!
小鱼:… 好吧,只要你能提升技能,其他的都无所谓…
小屌丝:呦吼~~ 对了鱼哥,我记得你有一篇博文,把文字写在图片里
小鱼:对哦,不少小伙伴通过这个方式,让自己的女友感动了。
小屌丝:那能不能把图片写在别的地方呢?
小鱼:例如呢??
小屌丝:excel,word,PDF 等等…
小鱼:…唉我去~~
小屌丝:嘿嘿~ ~ 来嘛 ~ ~
在这里插入图片描述

2、代码实战

2.1 思路

我们今天要分享的,是把图片写入到excel中,

注意:
这里说的,不是截取一张图片,粘贴到excel;
而是通过像素写入到excel中。

我们来捋一下思路:

  • 准备源图片,目标excel;
  • 通过Pillow 来读图片的取像素(RGB);
  • 通过openpyxl 向excel cell内填充十六进制色值;
  • 最后把转换的RGB像素直接写入到excel中;

说到这里,就们就来分步实现。

2.2 文件准备

需要写入而Excel的源图片:

在这里插入图片描述

2.3 实战

2.3.1 安装

本次需要用到两个模块: Pillow 和 openpyxl 。
老规矩, pip 方式安装:

pip install Pillow 
pip install openpyxl 

其他方式安装:

Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!
Python3:我低调的只用一行代码,就导入Python所有库!!

2.3.2 代码实战

1、色值转换
由于 图片读取的像素是RGB值,而excel是十六进制写入,
所以需要定义一个RGB与十六进制转换的函数

# -*- coding:utf-8 -*-
# @Time   : 2022-01-03
# @Author : carl_DJ

'''
定义RGB 和十六进制色值转换函数
'''

def rgb_to_hex(rgb):
    rgb = rgb.split(',')
    color = ''
    #循环遍历
    for i in rgb:
        num = int(i)
        color  += str(hex(num))[-2:].replace('x','0').upper()
    return  color

2、图片转换
此操作是逐行读取图片的 RGB 色值,再将 RGB 色值转换为十六进制色值填充到 Excel 的 cell 中。

# -*- coding:utf-8 -*-
# @Time   : 2022-01-03
# @Author : carl_DJ


'''
逐行读取图片中的RGB色值,再将RGB色值转换十六进制,填充到excel中
'''

def img_to_excel(img_path,excel_path):
    #读取源图片
    img_src = Image.open(img_path)
    #设置图片宽高
    img_width = img_src.size[0]
    img_hight = img_src.size[1]

    #图片加载
    str_strlist = img_src.load()
    #获取当前的excel文件
    wb = openpyxl.Workbook()
    #保存文件
    wb.save(excel_path)
    #打开excel_path 下的excel文件,并写入信息
    wb = openpyxl.load_workbook(excel_path)
    cell_width,cell_height = 1.0,1.0

    #设置excel的写入页
    sheet = wb['Sheet']

    #循环图片的高与宽,并存入
    for w in range(img_width):
        for h in range(img_hight):
            data = str_strlist[w,h]
            color = str(data).replace("(","").replace(")","")
            color  = rgb_to_hex(color)

            #设置填充颜色为color
            fille = PatternFill("solid",fgColor = color)
            sheet.cell(h + 1,w + 1).fill = fille

    #循环遍历row,让其全部写入
    for i in range(1,sheet.max_row + 1):
        sheet.row_dimensions[i].height = cell_height
    #循环遍历column,让其全部写入
    for i in range(1,sheet.max_column + 1):
        sheet.column_dimensions[get_column_letter(i)].width = cell_width

    #保存文件
    wb.save(excel_path)
    #关闭
    img_src.close()

3、代码整合

# -*- coding:utf-8 -*-
# @Time   : 2022-01-03
# @Author : carl_DJ

import  openpyxl
from openpyxl.styles import PatternFill
from openpyxl.utils import  get_column_letter
from PIL import Image,ImageFont,ImageDraw,ImageColor


'''
色值转换:
从图片读取的像素块色值是 RGB 值,
RGB 和十六进制色值转换。
'''

def rgb_to_hex(rgb):
    rgb = rgb.split(',')
    color = ''
    #循环遍历
    for i in rgb:
        num = int(i)
        color  += str(hex(num))[-2:].replace('x','0').upper()
    return  color


'''
图片转换:
逐行读取图片中的RGB色值,再将RGB色值转换十六进制,填充到excel中
'''

def img_to_excel(img_path,excel_path):
    #读取源图片
    img_src = Image.open(img_path)
    #设置图片宽高
    img_width = img_src.size[0]
    img_hight = img_src.size[1]

    #图片加载
    str_strlist = img_src.load()
    #获取当前的excel文件
    wb = openpyxl.Workbook()
    #保存文件
    wb.save(excel_path)
    #打开excel_path 下的excel文件,并写入信息
    wb = openpyxl.load_workbook(excel_path)
    cell_width,cell_height = 1.0,1.0

    #设置excel的写入页
    sheet = wb['Sheet']

    #循环图片的高与宽,并存入
    for w in range(img_width):
        for h in range(img_hight):
            data = str_strlist[w,h]
            color = str(data).replace("(","").replace(")","")
            color  = rgb_to_hex(color)

            #设置填充颜色为color
            fille = PatternFill("solid",fgColor = color)
            sheet.cell(h + 1,w + 1).fill = fille

    #循环遍历row,让其全部写入
    for i in range(1,sheet.max_row + 1):
        sheet.row_dimensions[i].height = cell_height
    #循环遍历column,让其全部写入
    for i in range(1,sheet.max_column + 1):
        sheet.column_dimensions[get_column_letter(i)].width = cell_width

    #保存文件
    wb.save(excel_path)
    #关闭
    img_src.close()


if __name__ == '__main__':
    #源图片地址
    img_path = './queue.jgp'
    #保存excel地址
    excel_path = './queue.xlsx'
    #执行
    img_to_excel(img_path, excel_path)

4、运行结果
在这里插入图片描述

3、总结

写到这里,今天的分享就差不多结束了。
因为今天也用到了Pillow,如果想快速入手,可以参照小鱼的这篇博文《Python3,10行代码,我把情书写在她的照片里,她被我的才华征服了。

这里小鱼提醒一下,
如果你的源图片很大,运行完成后,打开Excel会提示文件损坏,
因为Excel的行数有限,导致无法全部写完数据。

Excel报错详情
在这里插入图片描述

xml报错详情:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<recoveryLog xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main"><logFileName>error254800_05.xml</logFileName><summary>在文件“D:\Project\img\king.xlsx”中检测到错误</summary><removedParts><removedPart>已删除的部件: 部件 /xl/styles.xml。 (样式)</removedPart></removedParts><repairedRecords><repairedRecord>已修复的记录: /xl/worksheets/sheet1.xml 部分的 单元格信息</repairedRecord></repairedRecords></recoveryLog>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python3,19行代码,我把她的照片写入到Excel中,2022年伊始,她终于被我感动了。 的相关文章

随机推荐

  • C++中对象创建与释放

    创建对象有以下四种形式 include
  • 一毛一条的接码平台_搭建一套基于 Groovy 规则引擎的业务风控平台

    黑灰产在互联网领域盛行 从反面推动了业务安全反欺诈领域的快速发展 互联网SAAS服务产品响应市场不断创新 也决定了业务风险的多样性 笔者所在财税领域常见的非财税业务互联网风控场景包括登陆注册 短信接口 营销活动 渠道引流推广 交易和支付等
  • 程序员如何逆袭,达到财富自由?

    程序员逆袭达到财富自由有以下几条路 1 加入独角兽公司 拿到大量期权 并坚守到上市套现 2 找到靠谱的创业公司和诚信的创始人 拿到百分比左右的股份 坚守到出售或者上市 3 通过技术创业 公司出售或者上市 4 建立影响力 通过技术咨询 自媒体
  • 目标检测中的MAP(无抄袭)

    个人理解 如果写的有问题可以留言交流 转载请标明出处 谢谢 参考链接 内含代码 https github com rafaelpadilla Object Detection Metrics 人家写的比我好 我只是用中文把理论小总结一下 懒
  • Transformer综述1——《A Survey on Visual Transformer》

    A Survey on Visual Transformer 摘要 将视觉Transformer应用到不同的任务中 分析优缺点 回顾自注意力机制 背景介绍 多层感知和全连接层是经典的神经网络 有多线性层和非线性激活函数 卷积神经网络引入卷积
  • STM32外设系列—DHT11

    本文程序暂时存在问题 显示的温湿度不正确 如有急需 可私信 文章标题 一 DHT11简介 二 数据手册分析 2 1 接口说明 2 2 串行通信说明 2 2 1 单总线通信 2 2 2 单总线传输数据位定义 2 2 3 时序图 三 DHT11
  • sringboot整合rabbitmq

    一 基本概念 生产者 Producer 产生数据发送消息的程序是生产者 交换机 Exchangs 交换机是 RabbitMQ 非常重要的一个部件 一方面它接收来自生产者的消息 另一方面它将消息推送到队列中 交换机必须确切知道如何处理它接收到
  • 人工神经网络和神经网络,人工神经网络排名第一

    当今人工神经网络界的顶尖人物 5 Donald O Hebb Hebbian learning John J Hopfield Hopfield NN classic recurrent NN Stephen Grossberg Gross
  • BUCK电路分析设计(一)/备忘

    用于DC DC转换的降压型BUCK电路如图所示 基本工作原理为 输入一占空比为D的脉冲信号 当信号低电平时PMOS开启 NMOS关闭 电源通过PMOS 流经电感 并对电容与负载充电 电感电流线性上升 斜率为 VIN VO L 当信号为高电平
  • STM32学习记录2 1.26

    本人为纯纯初学者 水平非常低 写文章只是为了记录学习经历 并且输出文字加强理解与记忆 本文十分不严谨 只具参考作用 可能具有误导性 请谨慎阅读 如果各位dalao发现错误 欢迎友善的指正 建议与讨论 初入CSDN 对平台的规范不是很熟悉 还
  • 手机数据线连接电脑,电脑不仅可以读定手机文件,还可以通过手机热点进网...

    环境 一台正在通WIFI上网的手机 红米2 一台不能上网的华硕笔记本电脑 1 打开手机的设置 gt 其他连接方式 gt 网络热点 然后可以看到这样的一个名称 USB共享网络 这是个开关 默认的灰色的 当手机用数据线连接笔记本的电脑的时候 它
  • 什么是分而治之?

    分而治之 从语文上来说 有两个意思 1 分别治理 2 利用手段使国家 民族或宗教等产生分裂 然后对其进行控制和统治 而从软件工程来看 是一种方法 是有效算法设计中普遍采用的一种技术 所谓 分而治之 就是把一个复杂的算法问题按一定的 分解 方
  • 动力节点Spring Boot3项目版实战教程,学练一体,轻松掌握

    Spring Boot 3是一个非常令人期待的版本 将进一步扩大Spring Boot框架在应用程序开发领域的影响力 并带来更加出色的开发体验 Spring Boot 3的推出 带来个更多的新特性和功能 也为开发人员提供更高效 更优秀的开发
  • 中医四诊之五音 --详解

    from 老中医 LaoZY cn 医家箴言 肝呼应角 心言应徵 脾歌应宫 肺哭应商 肾呻应羽 五脏五声 以合五音 素问 阴阳应象大论 曰 视喘息 听音声 而知所苦 盖病苦于中 声发于外 有不可诬者也 故 难经 六十一难 曰 闻其五音以别其
  • Django rest_framework开发一组RESTFUL标准接口[ModelSerializer+GenericAPIView]

    Django rest framework开发一组RESTFUL标准接口 ModelSerializer GenericAPIView 不管何等复杂的业务逻辑 不管何等高效的开发框架 对后端来说最终都要落到对具体的某一个关系模型的增删改查上
  • 各类文件对应Content-Type

    两种初始化Map常量 1 new HashMap 2 static 静态代码块 static Map
  • 微信小程序:心跳动画

    封装工具类 var app getApp module exports animationMiddleHeaderItem animationMiddleHeaderItem 心跳动画 平移动画 function animationMidd
  • linux部署jenkins报错:ModuleNotFoundError: No module named ‘XXX‘已解决

    项目场景 实现接口自动化python jenkins allure 部署环境 linux中部署jenkins容器 容器需安装jdk python环境 python脚本 放入jenkins容器中 allure 安装在容器中 jenkins配置
  • JS逆向 -- 开发者工具介绍

    一 打开方式 1 通过快捷键F12 2 通过浏览器设置打开 二 常用的功能 1 元素 显示前端的相关东西 2 控制台 可以动态获取某些变量的值 比如获取当前页面的cookie值 3 源代码 动态调试的时候用到 可以下断点查看堆栈等相关操作
  • Python3,19行代码,我把她的照片写入到Excel中,2022年伊始,她终于被我感动了。

    19行代码 把图片写到如excel 1 引言 2 代码实战 2 1 思路 2 2 文件准备 2 3 实战 2 3 1 安装 2 3 2 代码实战 3 总结 1 引言 小屌丝 鱼哥 新年快乐 小鱼 新年快乐 小屌丝 虽然是元旦 但是也算是迈入