背景
近日,拥有 1200 万粉丝的博主 “老师好我叫何同学” 因在视频《我用 36 万行备忘录做了个动画…》中被质疑抄袭,让我看到的了ASCII-generator
这个好玩儿的开源项目,那个项目是python
写的,转念一想,node
版本有吗?
一番查找之下(其实就是搜了下…)发现,还! 真!有!
揭秘
asciify-image
是一个开源的 Node.js 库,用于将图像转换为 ASCII 艺术字符。
准备工作(老配方,先准备)
让我们先新建一个
demo
目录,文件结构如下
demo
├── package.json # 项目配置文件
└── index.js # 入口文件
安装
首先,要确保你的电脑已经安装了 Node.js 和 npm ,安装好后,打开命令行工具,输入以下命令就可以安装 asciify-image
:
npm install asciify-image
基本使用
在安装完成后,就可以在你的 Node.js 项目中使用它了。以下是一个简单的示例代码:
// index.js
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 30,
height: 30,
color: true,
}
// 先加载一个本地文件
asciify("./test.jpeg", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
原始图片
效果
呦,这效果还不赖错哦~
进阶应用
设置重置大小的方式(fit)
fit: string
可选值为:
- box - 调整图像大小,使其适合由指定宽度和高度定义的边界框。保持纵横比。
- width - 通过将宽度缩放到指定宽度来调整图像大小。保持纵横比。
- height - 通过将高度缩放到指定高度来调整图像大小。保持纵横比。
- original - 不调整图像大小。
- none - 将宽度和高度缩放到指定值,忽略原始纵横比。
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 30,
height: 30,
color: false,
}
asciify("./test.jpeg", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
效果
设置是否启用颜色(color)
color: boolean (是否启用颜色,默认为 true)
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 30,
height: 30,
color: false,
}
asciify("./test.jpeg", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
效果
调整输出大小:可以通过设置选项来调整输出的大小和质量,示例代码如下:
// index.js
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 15,// 从文档看是终端窗口的百分比
height: 15,// 从文档看是终端窗口的百分比
}
asciify("./test.jpeg", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
效果
上面的是 15
的下面的是 30
的
调整返回值格式
format: “string” | “array”
默认为 string,当format设置为’array’转换结果将返回一个二维数组
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 30,
height: 30,
color: true,
format: 'array',
}
asciify("./test.jpeg", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
支持的文件格式
- JPG
- PNG
- GIF
是否支持远程图片呢?
支持
试试百度的 logo
var asciify = require('asciify-image');
var options = {
fit: 'box',
width: 100,
height: 100,
color: true,
}
asciify("https://www.baidu.com/img/flexible/logo/pc/result.png", options, function (err, asciified) {
if (err) throw err;
// 打印到控制台
console.log(asciified);
});
总结
asciify-image是一款将图片转换为 ASCII art 的工具,没有原生模块依赖,支持(JPG、PNG、GIF)格式的本地及远程文件,看起来可以用来炫技(其实就是装杯用),开玩笑,开玩笑,不喜勿喷
扩展-其他类似的模块
欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!