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年伊始,她终于被我感动了。 的相关文章

  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 为 Anaconda Python 安装 psycopg2

    我有 Anaconda Python 3 4 但是每当我运行旧代码时 我都会通过输入 source activate python2 切换到 Anaconda Python 2 7 我的问题是我为 Anaconda Python 3 4 安
  • Django:按钮链接

    我是一名 Django 新手用户 尝试创建一个按钮 单击该按钮会链接到我网站中的另一个页面 我尝试了一些不同的例子 但似乎没有一个对我有用 举个例子 为什么这不起作用
  • 使用 matplotlib 绘制时间序列数据并仅在年初显示年份

    rcParams date autoformatter month b n Y 我正在使用 matpltolib 来绘制时间序列 如果我按上述方式设置 rcParams 则生成的图会在每个刻度处标记月份名称和年份 我怎样才能将其设置为仅在每
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • python 相当于 R 中的 get() (= 使用字符串检索符号的值)

    在 R 中 get s 函数检索名称存储在字符变量 向量 中的符号的值s e g X lt 10 r lt XVI s lt substr r 1 1 X get s 10 取罗马数字的第一个符号r并将其转换为其等效整数 尽管花了一些时间翻
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • python获取上传/下载速度

    我想在我的计算机上监控上传和下载速度 一个名为 conky 的程序已经在 conky conf 中执行了以下操作 Connection quality alignr wireless link qual perc wlan0 downspe
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 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 引言 小屌丝 鱼哥 新年快乐 小鱼 新年快乐 小屌丝 虽然是元旦 但是也算是迈入