你知道吗?“何同学”视频《我用 36 万行备忘录做了个动画…》中的图片转ASCII,node 也可以实现哦

背景

近日,拥有 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)格式的本地及远程文件,看起来可以用来炫技(其实就是装杯用),开玩笑,开玩笑,不喜勿喷

扩展-其他类似的模块

ascii-image-converter

image-to-ascii

欢迎关注我的个人公众号「「小枫学幽默」」一起成长,一起分享生活!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值