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

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

效果如下:

 完整代码:

from PIL import Image
import openpyxl
from openpyxl.styles import PatternFill
import tkinter as tk
from tkinter import filedialogdef img_to_excel(image_path, excel_path):# 打开图像并缩放到较小的尺寸以适应Excel的单元格数量img = Image.open(image_path).convert('RGB').resize((300, 300))width, height = img.sizepixels = 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 = 2for 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.mzph.cn/news/631443.shtml

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

相关文章

electron+vite+vue3 快速入门教程

文章目录 前言一、electron是什么?二、electron 进程模型1.主进程2.渲染进程3.预加载脚本4.进程通信4.1 sendon(单向)4.2 invokehandle (双向)4.3 主进程向渲染进程发送事件 三、窗口创建与应用事件四、技术栈和构建工具五、electron-vite安装…

如何实现指定列值排序? ------ MySQL中的field()函数 [让排序更简单]

想自定义排序规则就用field() filed(“列名”,“值1”,“值2”…) 案例:要求 STATUS 列 按 N,Y,E, 排序。 select * from 表名 ORDER BY field(STATUS,N,"Y","E") 效果…

jQuery —— W3school 详解 简单易懂 (一)

jQuery 是一个 JavaScript 函数库。jQuery 极大地简化了 JavaScript 编程。jQuery 很容易学习。 <html> <head> <script type"text/javascript" src"jquery.js"></script> <script type"text/javascript"> $(doc…

android List,Set,Map区别和介绍

List 元素存放有序&#xff0c;元素可重复 1.LinkedList 链表&#xff0c;插入删除&#xff0c;非线性安全&#xff0c;插入和删除操作是双向链表操作&#xff0c;增加删除快&#xff0c;查找慢 add(E e)//添加元素 addFirst(E e)//向集合头部添加元素 addList(E e)//向集合…

【Python 千题 —— 基础篇】不吉利的数字

题目描述 题目描述 在西方,“13”被称为不吉利的数字,这是因为耶稣与13个弟子共进晚餐时耶稣的第13个弟子出卖了耶稣,且耶稣受难的日期是13日。所以西方的门牌号会跳过13号,假设这栋楼有16户,请为这栋楼的每一户设立门牌号。 输入描述 无 输出描述 依次输出这栋楼每…

C++核心编程之通过类和对象的思想对文件进行操作

目录 ​​​​​​​一、文件操作 1. 文件类型分类&#xff1a; 2. 操作文件的三大类 二、文本文件 1.写文件 2.读文件 三、二进制文件 1.写二进制文件 2.读二进制文件 一、文件操作 程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将…

Spring 中 HttpServletRequest 作为成员变量是安全的吗?

在使用spring框架开发的时候&#xff0c;经常会在controller类中看到 HttpServletRequest 对象参数&#xff0c;一般我们都是直接使用&#xff0c;但是它是何时、怎么注入到 spring 容器的呢 &#xff1f;另外以成员变量注入的 request 是线程安全的吗 ? Controller public c…

react umi/max 封装页签组件

1. models/tabs // 全局共享数据示例 import { useState } from react;const useUser () > {const [items, setItems] useState<any[]>([]); // 页签的全局Item数据const [key, setKey] useState<string>(/home); // 页签的高亮Keyreturn {items,setItems…

【协议】HTTP、HTTPS和HTTP2.0学习总结

1. TCP/IP四层协议 记得大学学网络课程的时候&#xff0c;学的都是OSI/RM七层协议&#xff0c;应用层 -> 表示层 -> 会话层 -> 传输层->网络层->数据链路层->物理层&#xff0c;当时学的时候&#xff0c;感觉太抽象了&#xff0c;学得个一知半解。大脑在接收…

Unity3D和three.js的比较

一、Unity3D和three.js简介 Unity3D是一款跨平台的游戏引擎,可以用于开发2D和3D游戏。它提供了一个可视化的开发环境,包含了强大的编辑器和工具,使开发者可以方便地创建游戏场景、添加物体、设置物理效果、编写脚本等。Unity3D支持多种平台,包括PC、移动设备、主机等,可以…

新版AndroidStudio配置maven阿里云镜像

project下的build.gradle&#xff1a; // Top-level build file where you can add configuration options common to all sub-projects/modules. // 注意jdk版本需要17以上&#xff0c;因为8.1.3的gradle需要jdk17以上 //plugins { // id com.android.application version…

解析exe文件

概述&#xff1a;上次用java生成exe文件。那如何解析exe文件呢&#xff1f;0.0 首先我们要了解exe文件里面有什么。用360压缩解压一下。 .data&#xff1a; 存储程序中的初始化的全局和静态变量。在程序运行之前&#xff0c;这些变量会被赋予特定的初始值。 .pdata (Procedu…

销售方法用得好,业绩蹭蹭蹭!

新零售模式是随着科技的发展而崭露头角的零售业态&#xff0c;它融合了传统零售与先进技术&#xff0c;为消费者带来了更便捷、智能的购物体验。 其中&#xff0c;自动售货机作为新零售的一种代表形式&#xff0c;通过高度自动化和数字化的手段&#xff0c;为消费者提供更加便利…

【RT-DETR有效改进】移动设备网络ShuffleNetV1(超轻量化网络主干)

前言 大家好&#xff0c;这里是RT-DETR有效涨点专栏。 本专栏的内容为根据ultralytics版本的RT-DETR进行改进&#xff0c;内容持续更新&#xff0c;每周更新文章数量3-10篇。 专栏以ResNet18、ResNet50为基础修改版本&#xff0c;同时修改内容也支持ResNet32、ResNet101和PP…

计算机网络-计算机网络的概念 功能 发展阶段 组成 分类

文章目录 计算机网络的概念 功能 发展阶段总览计算机网络的概念计算机网络的功能计算机网络的发展计算机网络的发展-第一阶段计算机网络的发展-第二阶段-第三阶段计算机网络的发展-第三阶段-多层次ISP结构 小结 计算机网络的组成与分类计算机网络的组成计算机网络的分类小结 计…

【史上最全】前端页面深入浅出浏览器渲染原理

前言 浏览器的核心组件&#xff0c;即通常所说的浏览器内核&#xff0c;是支撑整个浏览器运行的关键性底层软件架构&#xff0c;它由两个关键组成部分构成&#xff1a;一个是负责网页内容解析和渲染的渲染引擎&#xff0c;另一个则是用于执行JavaScript代码的JS引擎。各浏览器厂…

双向搜索的理解和板子

"互相奔赴&#xff0c;各司其职。“ ——双向搜索 双搜的要求&#xff1a; 当我们发现&#xff0c;要从一种状态开始&#xff0c;经过很多次操作&#xff0c;来得到一种给定的状态。 这时候&#xff0c;我们就可以考虑用双向搜索。 从起点和终点开始搜。当二者相遇&…

【React】组件性能优化、高阶组件

文章目录 React性能优化SCUReact更新机制keys的优化render函数被调用shouldComponentUpdatePureComponentshallowEqual方法高阶组件memo 获取DOM方式refs如何使用refref的类型 受控和非受控组件认识受控组件非受控组件 React的高阶组件认识高阶函数高阶组件的定义应用一 – pro…

如何用Python进行数据分析(保姆级教程)

有小伙伴在学Python新手教程的时候说学Python比较复杂的地方就是资料太多了&#xff0c;比较复杂。 很多网上的资料都是从语法教起的&#xff0c;花了很多时间还是云里雾里&#xff0c;摸不清方向。今天就给大家来捋一捋思路&#xff01;帮助大家提高学习效率&#xff01; Pyt…

mysql 自动生成随机数

在MySQL中&#xff0c;生成随机数可以使用RAND()函数。以下是一些基本用法&#xff1a; 1. **生成0到1之间的随机浮点数**&#xff1a; sql SELECT RAND(); 2. **生成指定范围内的随机整数**&#xff08;例如&#xff0c;生成1到100之间的随机整数&#xff09;&…