使用Node.js自动决定女孩子喜欢的男性类型
首先
在上一篇文章中,我谈到了使用自制设备制作游戏的经历。
在确定其中一个女孩的参数时,我使用了Node.js根据图像的色彩信息生成参数。
因为没有找到任何人写有关使用该库的例子,所以我顺便写了下笔记。
1. 规范库
获取图像颜色
一个库,可以输出指定图像中的前五种颜色
颜色分类器
一个库,可以将颜色进行分类
2. 准备好-
首先安装我们将要使用的库。
npm i --save get-image-colors
npm i --save color-classifier
3. 实施-色彩提取
以下是提取颜色的代码。
const path = require('path')
const getImageColors = require('get-image-colors')
getImageColors(path.join(__dirname, './female/115601.png')).then(colors => {
for(let i=0;i < colors.length;i++){
console.log(change16bitColorToObj(colors[i]))
}
})
function change16bitColorToObj(color){
let bitR = color._rgb[0].toString(16)
if(bitR.length === 1) bitR = '0' + bitR
let bitG = color._rgb[1].toString(16)
if(bitG.length === 1) bitG = '0' + bitG
let bitB = color._rgb[2].toString(16)
if(bitB.length === 1) bitB = '0' + bitB
return '#' + bitR + bitG + bitB
}
当执行
#ccb4b0 – 玫瑰色
#242129 – 深黑色
#463b4b – 深紫色
#5f5b63 – 石板灰色
#785c3e – 青铜色
输出将按照颜色的多少进行排序。
4. 落地实施 – 颜色分类
如果要将其分类为指定的颜色,可以使用以下代码。
const path = require('path')
const getImageColors = require('get-image-colors')
const colorClassifier = require('color-classifier')
const palette = [ '#ff0000', '#ffffff', '#000000','#0000ff', '#ff6666', '#00ff00', '#ffff00']
const ccf = new colorClassifier(palette)
getImageColors(path.join(__dirname, './female/115601.png')).then(colors => {
for(let i=0;i < colors.length;i++){
let color = ccf.classify(change16bitColorToObj(colors[i]))
console.log(change16bitColorToSting(color))
}
})
function change16bitColorToObj(color){
let bitR = color._rgb[0].toString(16)
if(bitR.length === 1) bitR = '0' + bitR
let bitG = color._rgb[1].toString(16)
if(bitG.length === 1) bitG = '0' + bitG
let bitB = color._rgb[2].toString(16)
if(bitB.length === 1) bitB = '0' + bitB
return '#' + bitR + bitG + bitB
}
function change16bitColorToSting(color){
let bitR = color.r.toString(16)
if(bitR.length === 1) bitR = '0' + bitR
let bitG = color.g.toString(16)
if(bitG.length === 1) bitG = '0' + bitG
let bitB = color.b.toString(16)
if(bitB.length === 1) bitB = '0' + bitB
return '#' + bitR + bitG + bitB
}
将之前的颜色根据以下调色板分类并输出:
const 调色板 = [‘#ff0000’, ‘#ffffff’, ‘#000000’, ‘#0000ff’, ‘#ff6666’, ‘#00ff00’, ‘#ffff00’]。
#FFFFFF – 白色
#000000 – 黑色
#000000 – 黑色
#000000 – 黑色
#FF0000 – 红色
5. 实施-个性分类
以下是先进行分类,然后为性格分配的代码。
const path = require('path')
const getImageColors = require('get-image-colors')
const colorClassifier = require('color-classifier')
const maleType = ['熱血', '純粋', '厨二', '冷静', '個性的', '草食系', '活発']
const palette = [ '#ff0000', '#ffffff', '#000000','#0000ff', '#ff6666', '#00ff00', '#ffff00']
const ccf = new colorClassifier(palette)
getImageColors(path.join(__dirname, './female/115601.png')).then(colors => {
for(let i=0;i < colors.length;i++){
let color = ccf.classify(change16bitColorToObj(colors[i]))
console.log(maleType[palette.indexOf(change16bitColorToSting(color))])
}
})
function change16bitColorToObj(color){
let bitR = color._rgb[0].toString(16)
if(bitR.length === 1) bitR = '0' + bitR
let bitG = color._rgb[1].toString(16)
if(bitG.length === 1) bitG = '0' + bitG
let bitB = color._rgb[2].toString(16)
if(bitB.length === 1) bitB = '0' + bitB
return '#' + bitR + bitG + bitB
}
function change16bitColorToSting(color){
let bitR = color.r.toString(16)
if(bitR.length === 1) bitR = '0' + bitR
let bitG = color.g.toString(16)
if(bitG.length === 1) bitG = '0' + bitG
let bitB = color.b.toString(16)
if(bitB.length === 1) bitB = '0' + bitB
return '#' + bitR + bitG + bitB
}
男性类型包括:热血、纯粹、厨二、冷静、个性的、草食系、活跃。
将这个数组进行分配并输出,显示如下。
純粋
厨二
厨二
厨二
熱血
游戏中将前三个色系的性格作为参数输入。
结束
最近,Node.js不仅在服务器端,还经常在客户端等其他地方被广泛使用。
由于它拥有众多功能和大量易用的库,因此即使只专注于客户端开发的人也可以尝试一下。