在excel表格里画像素图【程序画图 | 按键精灵】

在网上,能够看到一些正常图片转为像素图的软件。

对此很感兴趣,打算写一个这样子的软件。

编写像素图生成软件,就要了解图片的组成原理,可以学习到一些图片的像素处理知识。



表格画像素图【作品视频】

一、前期思路

图片输出界面需要方方正正区域,为了好玩点,就选择办公软件的表格区域。

编程语言,可以选择办公软件的VBA,但是还是为了好玩点,就选择键鼠模拟软件,来模拟鼠标操作,把像素一点一点的粘贴出来。减少对编程环境的搭建,不考虑程序的执行效率,不作为正式软件,就选择按键精灵作为编程软件。

ps:后来发现对效率来说,是一个大坑,画一幅图就要好几分钟,甚至要好几十分钟,只能在后面想办法优化

编程环境:按键精灵 + 表格软件(office或者wps都可以)

二、像素生成软件界面

做一个软件界面,主要方便实现图片路径的选择、图片参数的设置、以及图片的效果预览。

在excel表格里画像素图【程序画图 | 按键精灵】_第1张图片
(表格画图_主界面)

三、程序部分

1.主要思路

在excel表格里画像素图【程序画图 | 按键精灵】_第2张图片
(表格画图_编程思路)  

原来打算画彩色图,使用键鼠模拟操作,更改表格单元格的背景色,但是步骤太麻烦了;

后面想到了利用粘贴功能,居然不能粘贴彩色的字符,最后只能画单色图。

(ps:如果使用VBA就不会存在这种问题了,可以直接操作单元格的格式)

2.程序编写

1) 提取图片像素点

提取图片的每个像素的RGB值很简单,只要一个方法就能获取一个数组。

其方法内部操作就是从图片的左上角开始,一行一行地存入这个数组。(数组里面的每个元素存放的就是每个像素的颜色值)

每一个颜色值是由ARGB四个值组成的(A可以理解为透明度),后面需要从中提取RGB。

(程序部分_提取图片像素)

2) 转化为单色图

利用与运算将RGB值从ARGB里面提取,然后将RGB转为亮度值(也就是灰度值)。

将亮度值的大小与阈值(人为设置)判断,可以分为黑色和白色。

在excel表格里画像素图【程序画图 | 按键精灵】_第3张图片
(程序部分_转为单色像素)

3)表格画图操作

读取图片的一行像素,判断像素的颜色,如果是黑色就添加字符,如果是白色就不填加。

判断完一行像素值后,将整行字符串粘贴到表格区域里面。

(为了提高效率,一行一行地粘贴字符,而不是一个个单元格地处理)

在excel表格里画像素图【程序画图 | 按键精灵】_第4张图片
(程序部分_画图操作)

四、画图效果

在excel表格里画像素图【程序画图 | 按键精灵】_第5张图片
(实际效果_填充方块)
在excel表格里画像素图【程序画图 | 按键精灵】_第6张图片
(实际效果_填充自定义字符)
在excel表格里画像素图【程序画图 | 按键精灵】_第7张图片
(实际效果_条件格式)

五、后面

整个程序算是基本达到目标,能够画出像素图,整个图片处理也没有太大的问题。

整个程序从后期来看,有两个难点:

a)提取图片的像素、b)表格区域字符的填充

问题a是一开始就会面临的问题,也是花费了整个项目几乎一半的时间,后面改变思路利用VBS关键词查找资料,到微软官网查阅参考文档才解决问题。

问题b只是会影响输出结果,原先计划输出彩色版本图片,但是由于无法解决控制单元格的颜色(不管是背景色还是文字颜色),干脆就输出单色字符就行。

【结束】

你可能感兴趣的:(在excel表格里画像素图【程序画图 | 按键精灵】)