在网上,能够看到一些正常图片转为像素图的软件。
对此很感兴趣,打算写一个这样子的软件。
编写像素图生成软件,就要了解图片的组成原理,可以学习到一些图片的像素处理知识。
表格画像素图【作品视频】
一、前期思路
图片输出界面需要方方正正区域,为了好玩点,就选择办公软件的表格区域。
编程语言,可以选择办公软件的VBA,但是还是为了好玩点,就选择键鼠模拟软件,来模拟鼠标操作,把像素一点一点的粘贴出来。减少对编程环境的搭建,不考虑程序的执行效率,不作为正式软件,就选择按键精灵作为编程软件。
ps:后来发现对效率来说,是一个大坑,画一幅图就要好几分钟,甚至要好几十分钟,只能在后面想办法优化
编程环境:按键精灵 + 表格软件(office或者wps都可以)
二、像素生成软件界面
做一个软件界面,主要方便实现图片路径的选择、图片参数的设置、以及图片的效果预览。
(表格画图_主界面)三、程序部分
1.主要思路
(表格画图_编程思路)原来打算画彩色图,使用键鼠模拟操作,更改表格单元格的背景色,但是步骤太麻烦了;
后面想到了利用粘贴功能,居然不能粘贴彩色的字符,最后只能画单色图。
(ps:如果使用VBA就不会存在这种问题了,可以直接操作单元格的格式)
2.程序编写
1) 提取图片像素点
提取图片的每个像素的RGB值很简单,只要一个方法就能获取一个数组。
其方法内部操作就是从图片的左上角开始,一行一行地存入这个数组。(数组里面的每个元素存放的就是每个像素的颜色值)
每一个颜色值是由ARGB四个值组成的(A可以理解为透明度),后面需要从中提取RGB。
(程序部分_提取图片像素)2) 转化为单色图
利用与运算将RGB值从ARGB里面提取,然后将RGB转为亮度值(也就是灰度值)。
将亮度值的大小与阈值(人为设置)判断,可以分为黑色和白色。
(程序部分_转为单色像素)3)表格画图操作
读取图片的一行像素,判断像素的颜色,如果是黑色就添加字符,如果是白色就不填加。
判断完一行像素值后,将整行字符串粘贴到表格区域里面。
(为了提高效率,一行一行地粘贴字符,而不是一个个单元格地处理)
(程序部分_画图操作)四、画图效果
(实际效果_填充方块) (实际效果_填充自定义字符) (实际效果_条件格式)五、后面
整个程序算是基本达到目标,能够画出像素图,整个图片处理也没有太大的问题。
整个程序从后期来看,有两个难点:
a)提取图片的像素、b)表格区域字符的填充
问题a是一开始就会面临的问题,也是花费了整个项目几乎一半的时间,后面改变思路利用VBS关键词查找资料,到微软官网查阅参考文档才解决问题。
问题b只是会影响输出结果,原先计划输出彩色版本图片,但是由于无法解决控制单元格的颜色(不管是背景色还是文字颜色),干脆就输出单色字符就行。
【结束】
网友评论