上班摸鱼的时候突然想到以前有个日本老爷爷用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()