# Excel像素画生成器 **Repository Path**: elfbobo_admin/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**: 0 - **Forks**: 58 - **Created**: 2022-10-31 - **Last Updated**: 2022-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Excel像素画生成器 #### 介绍 ![网络案例](https://gitee.com/uploads/images/2019/0430/140011_9202dcc4_1342689.jpeg "timg.jpg") 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** ![输入图片说明](00.jpg) #### 软件架构 Java 8 #### 使用说明 ![启动方式](https://gitee.com/uploads/images/2019/0507/102339_8e850cda_1342689.jpeg "QQ截图20190507102149.jpg") 启动方式:命令行启动,第一个参数为源图片路径,第二个参数为输出Excel的路径。 #### 注意事项 1、本项目依赖Apache POI,依赖包已经打包在项目中;
2、原图片支持jpg、png、bmp、gif格式(如果是动态gif图片,默认只取第一帧);
3、项目为单线程,当图片很大时,速度很慢。有兴趣的朋友请自行改成多线程。 -----------------------2019年5月5日---------------------
很多人吐槽程序运行超慢。首先感谢大家关注这个项目,其实 $\color{red}{这个工具本来只是我给亲戚家的孩子写的一个小玩具,完全没优化}$ 。 $\color{red}{同事看了之后说挺有意思的,我就拿来开源了。没想到能得到这么多关心}$ 。 $\color{red}{实话实说,我没有打算在这个项目上消耗太多精力}$ 。其次,运行缓慢的原因是因为这个项目依赖Apache POI,熟悉POI的朋友相信都知道,POI的性能一直是它的最大缺点。目前暂时没有办法完全攻克。后期我会抽空尽力去优化,目前想到几个办法:把POI换成其他速度更快的Excel操作类、修改POI源码、上多线程。如果朋友们有更好的办法,也请fork。多谢 先修复一些小bug。
1.1版更新说明:增加了HashMap作为单元格格式的缓存,避免出现illegalStateException。之前会出现illegalStateException的原因是:在一张表格中生成了过多的单元格格式,超出了微软对office文件的要求(一张excel表格中最多有64000种不同的单元格格式)。其实一张图片中,有很多像素点的RGB值是完全一样的,对于同样的RGB值,应该只生成一个单元格格式,缓存起来,对同样颜色的区域重复应用这个单元格格式。但之前的代码中,每一个单元格都生成一个独立的样式,造成数量过多。
-----------------------2019年5月7日---------------------
功能更新:
啥也没干,就升级了一下Apache POI依赖包(升级到最新的4.1版),实测发现速度提升了3倍以上(-_-!)

BugFix:
性能还有压榨空间,准备搞多线程,但是遇到了一些线程安全问题,百思不得其解。最近也比较忙,回头再看看。
1、优化了检查输入参数的逻辑;
2、支持的图片格式增加到jpg、png、bmp、gif(如果是动态gif,默认只取第一帧);
3、删除了一段无用的代码;
4、简化了异常捕捉逻辑
----------------------2019年5月10日--------------------
舍弃了生成Style对象的工厂方法,改为使用clone()方法来生成新的Style对象,实测性能提升了约7%
----------------------2019年8月8日--------------------
暂停维护( **$\color{red}{见上方2019年5月5日更新日志的红色字体部分}$ ** )