使用Node.js自动决定女孩子喜欢的男性类型

首先

在上一篇文章中,我谈到了使用自制设备制作游戏的经历。
在确定其中一个女孩的参数时,我使用了Node.js根据图像的色彩信息生成参数。
因为没有找到任何人写有关使用该库的例子,所以我顺便写了下笔记。

1. 规范库

获取图像颜色
一个库,可以输出指定图像中的前五种颜色
颜色分类器
一个库,可以将颜色进行分类

2. 准备好-

115601.png

首先安装我们将要使用的库。

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不仅在服务器端,还经常在客户端等其他地方被广泛使用。
由于它拥有众多功能和大量易用的库,因此即使只专注于客户端开发的人也可以尝试一下。

广告
将在 10 秒后关闭
bannerAds