使用python将图像复刻到excel表格

news2024/12/22 23:56:59

上班摸鱼的时候突然想到以前有个日本老爷爷用excel表格作画感觉挺牛的,
然后想到图像可以分割成一个个小块,excel表格也是一个个小格子,将小块的坐标和颜色对应填充到表格中,不就行了。

效果如下:

 完整代码:

from PIL import Image
import openpyxl
from openpyxl.styles import PatternFill
import tkinter as tk
from tkinter import filedialog
 
def img_to_excel(image_path, excel_path):
    # 打开图像并缩放到较小的尺寸以适应Excel的单元格数量
    img = Image.open(image_path).convert('RGB').resize((300, 300))
    width, height = img.size
    pixels = img.load()
 
    # 创建新的Excel工作簿和工作表
    wb = openpyxl.Workbook()
    ws = wb.active
 
    # 设置所有列的宽度
    for i in range(width):
        ws.column_dimensions[openpyxl.utils.get_column_letter(i+1)].width = 2
 
    for y in range(height):
        for x in range(width):
            r, g, b = pixels[x, y]
            # 创建颜色填充
            fill = PatternFill(start_color=f'{r:02X}{g:02X}{b:02X}',
                               end_color=f'{r:02X}{g:02X}{b:02X}',
                               fill_type='solid')
            # 设置单元格的颜色
            ws.cell(row=y+1, column=x+1).fill = fill
 
    # 保存到Excel文件
    wb.save(excel_path)
 
def main():
    root = tk.Tk()
    root.withdraw()  # 隐藏主窗口
 
    # 弹出文件选择对话框让用户选择图片
    image_path = filedialog.askopenfilename(
        title='选择图片',
        filetypes=[('Image Files', '*.png *.jpg *.jpeg *.bmp *.tif *.tiff *.gif')])
 
    # 弹出文件保存对话框让用户选择Excel文件的保存路径
    excel_path = filedialog.asksaveasfilename(
        title='保存Excel文件',
        filetypes=[('Excel Files', '*.xlsx')],
        defaultextension='.xlsx')
 
    # 将图片中的像素颜色信息保存到Excel文件
    img_to_excel(image_path, excel_path)
 
if __name__ == '__main__':
    main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1389285.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手把手教你用jmeter做压力测试(详图)

一.前言 压力测试是每一个Web应用程序上线之前都需要做的一个测试,他可以帮助我们发现系统中的瓶颈问题,减少发布到生产环境后出问题的几率;预估系统的承载能力,使我们能根据其做出一些应对措施。所以压力测试是一个非常重要的步…

windows server 2019 云服务器看不见硬盘的解决方案

刚拿的windows server 服务器看不见硬盘,这是因为没有初始化数据盘的原因。 解决方案如下: 单击“服务器管理器”仪表盘。 弹出“服务器管理器”窗口,如图1所示。 “服务器管理器”页面右上方选择“工具 > 计算机管理”。 弹出“计算机管…

Vue:将以往的JQ页面,重构成Vue组件页面(组件化编码大致流程)

一、实现静态组件 组件要按照功能点拆分,命名不要与HTML元素冲突。 1、根据UI提供的原型图,进行结构设计,结构设计的粒度以是否方便给组件起名字为依据。并梳理好对应组件的层级依赖关系。 2、设计好结构后,开始写对应的组件&am…

vue2使用electron以及打包配置

1.创建项目 vue create vue-project 2.安装electron vue add electron-builder会自动安装相关依赖 安装成功后会在src下自动生成一个background.js文件就是相应的electron的配置信息 use strictimport { app, protocol, BrowserWindow } from electron import { createProto…

【书生·浦语】大模型实战营——第四课作业

教程文档:https://github.com/InternLM/tutorial/blob/main/xtuner/self.md 基础作业需要构建数据集,微调模型,让其明白自己的弟位(OvO!) 微调环境准备 进入开发机后,先bash,再创…

P9847 [ICPC2021 Nanjing R] Crystalfly 题解 (SPJ)

[ICPC2021 Nanjing R] Crystalfly 传送门? 题面翻译 给定一个 n ( 1 ≤ n ≤ 1 0 5 ) n(1\le n\le10^5) n(1≤n≤105) 个节点的树,每个节点上有 a i a_i ai​ 只晶蝶。派蒙最初在 1 1 1 号节点,并获得 1 1 1 号节点的所有晶蝶&#xf…

vba设置excel单元格背景色

vba设置excel单元格背景色位蓝色 Sheet1.Cells(hang, 2).Interior.Color RGB(0, 0, 255) 参考链接 【VBA】给单元格设置背景色_vba 将一行底色置绿色-CSDN博客https://blog.csdn.net/s_h_m114_2/article/details/105787093 参考2 知乎 VBA--单元格的背景色设置 特此…

如何实现固定公网地址同步Zotero科研文献管理器

文章目录 一、Zotero安装教程二、群晖NAS WebDAV设置三、Zotero设置四、使用公网地址同步Zotero文献库五、使用永久固定公网地址同步Zotero文献库 Zotero 是一款全能型 文献管理器,可以 存储、管理和引用文献,不但免费,功能还很强大实用。 ​ Zotero 支…

MTK平台-- 如何学习Bluedroid 的GATT

一 GATT定义 GATT是低功耗蓝牙属性应用规范,应用于主机和从设备之间的数据传输。 二 MTK平台Bluedroid框架 相关源码介绍 vendor/mediatek/proprietary/packages/modules/Bluetooth/android/app/src/com/android/bluetooth/gatt/GattService.java (用于GATT(Generic Attri…

解决方案:reactNative通过webview跳转微信智能客服空白webview页面

在reactNative中使用webview跳转微信智能客服,功能正常,从微信退回到App时,会有一个空白的webview页面,在使用感觉上不是那么的顺滑。解决这个可以在webview中使用onLoadEnd方法来解决这个问题 在react-native-webview中onLoadEn…

HackTheBox - Medium - Linux - Mentor

Mentor Mentor 是一台中等难度的 Linux 机器,其路径包括在到达 root 之前在四个不同的用户之间切换。使用可暴力破解的社区字符串扫描“SNMP”服务后,会发现用于“API”端点的明文凭据,该端点被证明容易受到盲目远程代码执行的影响&#xff…

使用WAF防御网络上的隐蔽威胁之命令注入攻击

命令注入攻击是网络安全领域的一种严重威胁,它允许攻击者在易受攻击的应用程序上执行恶意命令。 这种攻击通常发生在应用程序将用户输入错误地处理为操作系统命令的情况下。 什么是命令注入攻击 定义:命令注入攻击发生在攻击者能够在易受攻击的应用程…

java-包详解

1、包介绍 为了更好的组织类,用于区别类名的命名空间,其实就是基于工程的一个文件路径,如: 2、作用 三个作用: 1)区分相同名称的类。 2)能够较好地管理大量的类。 3)控制访问范围…

鸿蒙原生应用/元服务开发-延迟任务说明(一)

一、功能介绍 应用退至后台后,需要执行实时性要求不高的任务,例如有网络时不定期主动获取邮件等,可以使用延迟任务。当应用满足设定条件(包括网络类型、充电类型、存储状态、电池状态、定时状态等)时,将任务…

重生奇迹MU打怪攻略

在重生奇迹MU中,打怪是一个非常重要的活动,可以帮助玩家提高等级、获得装备和收集物品,因此需要注意以下几个细节: 筛选怪物 在打怪时,需要根据自身的实力来选择适合自己的怪物,不要盲目攻击难度太高的怪…

Linux中测试内存卡的读写速度方法

Linux下有很多工具可以测试内存卡的读写速度。以下是几个常用的工具: dd命令:dd命令可以用来复制文件和设备。通过指定数据块大小,可以测试内存卡的读写速度。例如,可以使用以下命令测试内存卡的写速度: dd if/dev/zer…

“轻松粘贴,高效办公:自动粘贴文本技术让您事半功倍

"在快节奏的现代工作中,时间就是金钱。使用自动粘贴文本技术,让您告别繁琐的手动操作,提高工作效率。一键粘贴,释放您的双手,让您专注于创作和思考。让工作更高效,生活更精彩!" 首先…

“一键批量处理:轻松缩小图片像素,提升工作效率“

"在忙碌的工作中,时间就是金钱。使用我们的图片批量处理工具,轻松缩小图片像素,让您的工作更加高效。一键操作,告别繁琐,让您有更多时间享受生活。高效工作,从这里开始!" 第一步&…

后台生成随机验证码验证登录

web get请求获取图片 <div class"p2"><img id"imgId" src"/get/code"><a href"#">看不清&#xff0c;换一张</a> </div> 后台代码: /*获取动态验证码*/ ResponseBody RequestMapping(value "/…

红日靶场2 指免杀360 个人学习记录

360安全卫士&#xff0c;有一说一&#xff0c;确实很强&#xff0c;这几天研究的MSF利用java反序列化的漏洞是无法利用的&#xff0c;其他方法也瘦小甚微 前几天在研究用 用免杀工具 go-shellcode-loader-main免杀工具对我们生成的木马进行加密 本来是用csa4.0黑客工具生成了…