背景:

最近在研究词云(word cloud)发现个很有意思的东西。
不知道大家有没有看到过下面这种注释
比如

/***
* _ooOoo_
* o8888888o
* 88" . "88
* (| -_- |)
* O\ = /O
* ____/`---'\____
* . ' \\| |// `.
* / \\||| : |||// \
* / _||||| -:- |||||- \
* | | \\\ - /// | |
* | \_| ''\---/'' | |
* \ .-\__ `-` ___/-. /
* ___`. .' /--.--\ `. . __
* ."" '< `.___\_<|>_/___.' >'"".
* | | : `- \`.;`\ _ /`;.`/ - ` : | |
* \ \ `-. \_ __\ /__ _/ .-` / /
* ======`-.____`-.___\_____/___.-`____.-'======
* `=---='
*
* .............................................
* 佛祖保佑 永无BUG
*/

又比如

/*** 初音镇楼
*_______________#########_______________________
*______________############_____________________
*______________#############____________________
*_____________##__###########___________________
*____________###__######_#####__________________
*____________###_#######___####_________________
*___________###__##########_####________________
*__________####__###########_####_______________
*________#####___###########__#####_____________
*_______######___###_########___#####___________
*_______#####___###___########___######_________
*______######___###__###########___######_______
*_____######___####_##############__######______
*____#######__#####################_#######_____
*____#######__##############################____
*___#######__######_#################_#######___
*___#######__######_######_#########___######___
*___#######____##__######___######_____######___
*___#######________######____#####_____#####____
*____######________#####_____#####_____####_____
*_____#####________####______#####_____###______
*______#####______;###________###______#________
*________##_______####________####______________
*/

这些是怎么生成的呢?后面我找到一个小工具jave(注意不是java)官网在这:​​http://www.jave.de/​

1、下载工具

注意因为是java编写的,所以是需要安装java环境的,官网要求最低是(JRE) 1.2

jave image to ascii_梯度下降


jave image to ascii_词云_02

2、安装工具

下载完后直接解压,不需要安装可以直接使用

jave image to ascii_java_03


jave image to ascii_图片转ASCII_04


双击jave.jar运行

3、使用工具

I、Convert an Imager to ASCII

我们可以直接使用Convert an Imager to ASCII来讲图片转换成ASCII

jave image to ascii_词云_05

II、上传图片

选中要转换的图片后可以在下面看到预览的效果

jave image to ascii_java_06

III、图片处理

我们可以对转换效果做一些测试

jave image to ascii_官网_07


根据上面的几个选项大概猜到应该是通过算法对图片的二进制进行灰度,然后通过梯度下降检测出边缘,以此来显示图片的轮廓的。

IV、转换设置

jave image to ascii_官网_08

jave image to ascii_java_09

V、最后调整

发现最下面还有些比较孤立的1,看到很奇怪,我们可以使用左边的橡皮擦给修一下

jave image to ascii_词云_10

VI、最终效果

修补后效果好多了

jave image to ascii_梯度下降_11

VII、导出

jave image to ascii_官网_12


jave image to ascii_梯度下降_13