# Excel像素画生成器 **Repository Path**: qw3670/picToXlsx ## Basic Information - **Project Name**: Excel像素画生成器 - **Description**: Excel像素画,即:将一张Excel表的所有单元格都设置成正方形,然后逐个填充颜色,最终组成一幅画。本工具可读取指定的图片,遍历该图片的每个像素点,获取RGB值后,自动向Excel表格的相应单元格内填充同样的颜色,使之成为一副像素画。 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 202 - **Forks**: 57 - **Created**: 2019-04-30 - **Last Updated**: 2025-03-28 ## Categories & Tags **Categories**: excel-utils **Tags**: None ## README # Excel像素画生成器 #### 介绍 Excel像素画,即:将一张Excel表的所有单元格都设置成正方形,然后逐个填充颜色,最终组成一幅画。本工具可读取指定的图片,遍历该图片的每个像素点,获取RGB值后,自动向Excel表格的相应单元格内填充同样的颜色,使之成为一副像素画。 生成器使用效果图: **原图1** ![原图1](https://gitee.com/uploads/images/2019/0430/140720_170e97a0_1342689.jpeg "a.jpg") **成品1** ![成品1](https://gitee.com/uploads/images/2019/0430/140821_e9b5b5dd_1342689.jpeg "a1.jpg") **细节图1** ![细节图1](https://gitee.com/uploads/images/2019/0430/140845_43a7193e_1342689.jpeg "a2.jpg") **原图2** ![原图2](https://gitee.com/uploads/images/2019/0430/141002_f7d1c6bc_1342689.jpeg "b.jpg") **成品2** ![成品2](https://gitee.com/uploads/images/2019/0430/141018_370afe83_1342689.jpeg "b1.jpg") **细节图2** ![细节图2](https://gitee.com/uploads/images/2019/0430/141050_3a2d9fba_1342689.jpeg "b2.jpg") **原图3** ![原图3](https://gitee.com/uploads/images/2019/0430/141137_65198975_1342689.jpeg "c.jpg") **成品3** ![成品3](https://gitee.com/uploads/images/2019/0430/141157_0db5b29d_1342689.jpeg "c1.jpg") **细节图3** ![细节图3](00.jpg) #### 软件架构 Java 8 #### 使用说明 ![启动方式](01.png)
启动方式:命令行启动。参数1是源图片路径、参数2是输出Excel的路径、参数3是启动的线程数。其中参数3可以省略,默认启用12个线程。
-----------------------2019年5月5日---------------------
首先感谢关注本项目,其实 $\color{red}{这个工具本来只是我给亲戚家的孩子写的一个小玩具,完全没优化}$ 。 $\color{red}{同事看了之后说挺有意思的,我就拿来开源了。没想到能得到这么多关心}$ 。 $\color{red}{实话实说,我没有打算在这个项目上消耗太多精力}$ 。欢迎大家fork或提交PR。 BugFix:
修复了当图片的像素总数超过64000时会抛出illegalStateException的Bug。
此Bug出现的原因是:生成的单元格格式的数量超出了微软对office文件格式的限制(一张excel表中最多有64000种不同的单元格格式)。
解决方法是:一张图片中的很多像素的RGB值是相同的,对于同样的RGB值,没有必要重复生成,而是应当只生成一个单元格格式,并将其缓存、复用。因此,此次Bug修复增加了HashMap作为单元格格式的缓存。
-----------------------2019年5月7日---------------------
依赖更新:
升级Apache POI至最新的4.1版。经实测,性能大幅提升;

BugFix:
1、优化了检查输入参数的逻辑;
2、支持的图片格式增加到jpg、png、bmp、gif(如果是动态gif,只取第一帧);
3、删除了一段无用的代码;
4、简化了异常捕捉逻辑
----------------------2019年8月8日--------------------
暂停维护( **$\color{red}{见上方2019年5月5日更新日志的红色字体部分}$ ** )
----------------------2022年10月31日--------------------
感谢网友AboveParadise为项目贡献了多线程的代码。经实测,性能有明显提升
----------------------2022年11月1日--------------------
对AboveParadise的代码做了优化,提供了自定义线程数功能、重构了部分代码;
升级POI依赖包到5.1.0。用新API替换了代码中的旧API。经实测,性能有小幅提升;
更新了部分IDE配置文件;