网站建设服务 百度,网站seo策划方案设计,怎样做买东西的网站,网站建设管理中se是什么意思通过解析图片像素值#xff0c;然后在 Excel 单元格中填充对应颜色#xff0c;就能生成一张由无数小方格组成的“像素画”。这个工具不复杂#xff0c;适合对图像处理和自动化感兴趣的小伙伴研究。在这篇图文教程中#xff0c;我会一步步带你了解工具的原理、代码实现和使用…通过解析图片像素值然后在 Excel 单元格中填充对应颜色就能生成一张由无数小方格组成的“像素画”。这个工具不复杂适合对图像处理和自动化感兴趣的小伙伴研究。在这篇图文教程中我会一步步带你了解工具的原理、代码实现和使用方法。代码基于 PyQt5GUI 界面、OpenCV图像处理和 openpyxlExcel 操作简单易上手。感兴趣的同学可以直接 fork 代码试试工具效果预览先来看看成品效果吧左边是原图右边是生成的 Excel 艺术每个单元格就是一个像素。wechat_2025-10-10_171303_678另一个例子我换了张猫咪图片生成后效果如下wechat_2025-10-11_113608_678截图说明工具自动缩放图片到 320 宽生成低分辨率 Excel 以节省资源但细节依然清晰手工操作这种效果想想看一张 320x240 的图片就需要 76,800 个单元格手动填色……太恐怖了用程序几秒钟搞定。实现原理核心思路很简单读取图片用 OpenCV 加载图像获取每个像素的 RGB 值。缩放处理为了避免高分辨率图片占用过多资源默认将宽度固定为 320高度按比例缩放。生成 Excel用 openpyxl 创建工作表每个像素对应一个单元格填充对应颜色的 PatternFill。GUI 界面PyQt5 提供简单界面选择图片和保存路径一键绘制还带进度条显示。环境准备Python 3.8依赖库pip install PyQt5 opencv-python openpyxl numpyUI 文件用 Qt Designer 设计 excel_ui.py我用的是一个简单的窗口包含图片预览、路径输入和按钮。如果懒得配置环境我还打包了 EXE 可执行文件脱离 Python 环境完整代码下面是核心代码分为主窗口类和入口。代码不长注释详尽。import sysfrom PyQt5.QtWidgets import QApplication, QMainWindow, QFileDialog, QMessageBox, QProgressDialogfrom PyQt5.QtGui import QImage, QPixmapfrom excel_ui import Ui_MainWindow # Qt Designer 生成的 UI 文件from PyQt5.QtCore import Qt, QTimerimport cv2import numpy as npimport openpyxlfrom openpyxl.styles import PatternFillfrom openpyxl.utils import get_column_letterclass MainWindow(QMainWindow, Ui_MainWindow):def __init__(self, parentNone):super().__init__(parent)self.setupUi(self)self.img_ori None # 存储原始图像def select_pic(self):选择图片并预览file_path, _ QFileDialog.getOpenFileName(self, 选择图片, , Image Files(*.png *.jpg *.jpeg *.bmp))if file_path:self.img_ori cv2.imread(file_path)img cv2.cvtColor(self.img_ori, cv2.COLOR_BGR2RGB)h, w, ch img.shapebytes_per_line ch * wq_image QImage(img.data, w, h, bytes_per_line, QImage.Format.Format_RGB888)q_pixmap QPixmap.fromImage(q_image)self.imageLabel.setPixmap(q_pixmap.scaled(self.imageLabel.width(), self.imageLabel.height(),Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation))def select_excel(self):选择 Excel 保存路径file_path, _ QFileDialog.getSaveFileName(self,设置 Excel 路径,,Excel Files (*.xlsx *.xls))if file_path:self.excelPathLineEdit.setText(file_path)return file_pathelse:return Nonedef huizhi(self):绘制图片到 Excelif not hasattr(self, img_ori) or self.img_ori is None:QMessageBox.warning(self, 警告, 请先选择图片)returnexcel_path self.excelPathLineEdit.text()if not excel_path:QMessageBox.warning(self, 警告, 请先选择 Excel 文件保存路径)returntry:# 强制缩放宽度为 320高度按比例计算min_width 320image self.img_oriheight, width image.shape[:2]scale_factor min_width / widthnew_width min_widthnew_height int(height * scale_factor)image cv2.resize(image, (new_width, new_height))# 创建 Excel 工作簿workbook openpyxl.Workbook()sheet workbook.active# 设置单元格为正方形宽度 3高度 17for col in range(1, new_width 1):sheet.column_dimensions[get_column_letter(col)].width 3for row in range(1, new_height 1):sheet.row_dimensions[row].height 17# 创建进度条progress QProgressDialog(正在绘制图片到 Excel..., 取消, 0, new_height, self)progress.setWindowTitle(进度)progress.setWindowModality(Qt.WindowModal)progress.setValue(0)# 遍历图片像素并填充 Excel 单元格for y in range(new_height):if progress.wasCanceled():breakfor x in range(new_width):b, g, r image[y, x] # OpenCV 默认 BGR 格式color {:02x}{:02x}{:02x}.format(r, g, b) # 转换为 RGB 格式的十六进制if color 000000:color 010101 # 纯黑色替换为深灰色fill PatternFill(start_colorcolor, end_colorcolor, fill_typesolid)sheet.cell(rowy 1, columnx 1).fill fillprogress.setValue(y 1)QApplication.processEvents() # 确保 UI 更新# 保存 Excel 文件if not progress.wasCanceled():workbook.save(excel_path)QMessageBox.information(self, 成功, 图片已成功绘制到 Excel 文件)progress.close()except Exception as e:QMessageBox.critical(self, 错误, f绘制失败: {str(e)})if __name__ __main__:app QApplication(sys.argv)window MainWindow()window.show()sys.exit(app.exec())代码亮点解析图像预览select_pic() 用 QImage 实时显示选中的图片保持宽高比。缩放优化cv2.resize() 固定宽度 320避免高分辨率卡顿。实际 Excel 文件大小控制在合理范围内。像素填充双层循环遍历 (y, x)转 RGB 十六进制应用 PatternFill。进度条用 QProgressDialog 实时反馈。异常处理捕获保存错误友好提示。wechat_2025-10-11_113721_605使用步骤运行程序python main.py 或双击 EXE。点击“选择图片”挑选一张 PNG/JPG 等格式的图像界面会预览。点击“选择 Excel 路径”设置保存文件名.xlsx。点击“开始绘制”等待进度条完成。打开生成的 ExcelCtrl 滚轮缩放查看效果建议全屏查看表格内容结语这个小工具就是下午“无聊”时写的编程的乐趣就在于把不可能变可能。如果你有图像处理项目灵感评论区聊聊别忘了三连点赞、收藏、关注支持下更多干货见