Hi头像

Hi头像

  • 网站首页
  • 技术博客
  • 教程小册

›4-实战开发

标题

  • 《从0到1开发一个智能头像识别小程序》

1-前言

  • 1.1 产品需求设计、页面流程图及项目规划
  • 1.2 技术选型的依据

2-项目配置

  • 2.1 小程序开启云开发模式
  • 2.2 人脸五官分析的环境配置

3-知识储备

  • 3.1 图片裁剪、模糊、保存、分享的技巧
  • 3.2 Canvas绘制技巧,包含小程序与 Web 端
  • 3.2 云开发图像处理的使用方法

4-实战开发

  • 4.1.1 上篇:借助云存储和图像处理扩展人脸智能裁剪
  • 4.1.2 下篇:图像识别流程——图片裁剪、图片压缩、base64转换
  • 4.2 云开发必备——图像安全审核
  • 4.3 通过五官分析实现为人脸佩戴贴纸
  • 4.4 人脸贴纸移动技巧
  • 4.5 头像绘制和图片保存弹窗
  • 4.6【未写】海报分享页面
  • 4.7 CMS扩展实战-节日主题贴纸放在云开发
  • 4.8 【第二期】个人中心的制作
  • 4.9【第二期】小程序与Web端的账户体系摸索

云开发-公众号外发

  • 图片识别加速,从10秒变为1秒,是怎么做到的呢?
  • 简单几步,让微信小程序变身 H5 网页
  • 【草稿】借助云存储,让大图识别转换真正加速
  • 云开发CMS实战-Hi头像节日主题贴纸大升级
  • 小程序云开发环境部署静态网站托管的实战
  • Web 云开发实战之盲水印添加工具(核心版)
  • Web 云开发实战之盲水印添加工具(步骤版)

更多探索

  • 【草稿】深色模式在Web端的适配技巧,附带小程序侧的思考
  • 【草稿】小程序框架:Taro 2.0与Taro 3.0的核心分析

4.1.2 下篇:图像识别流程——图片裁剪、图片压缩、base64转换

知识点

  • 成本分析
  • 图片压缩的技巧
  • base64、buffer等

在《图片识别加速,从10秒变为1秒,是怎么做到的呢?》中,我详细地介绍了我是如何做图片识别加速的。但我这里从上一篇文章的流程与这一篇作对比来简述这件事情。

上一篇文章的步骤

  • 选择图片
  • 上传原图到云存储,原图通常宽高都大约3000像素,大小约为2M以上,用时2秒左右
  • 再获取图片的临时链接,用时1秒左右
  • 使用原图进行人脸智能裁剪,获得600x600图片

实际效果分析

  • 用户选择图片后,会经历3秒左右的等待时间(再加上后面的图像安全审核和五官分析,会更久)
  • 原图很大,占据了云存储空间,造成了不必要的浪费。
  • 从产品需求角度来说,用户真正需要的是最后的成图,而非原图

优化后的步骤

  • 选择图片
  • 裁剪图片
  • 图片压缩为10%的临时图片
  • 临时图片转换为base64数据
  • 使用Base64数据进行后续的图像安全审核、人脸五官分析等操作
  • 而这之后,可以让用户选择是否将临时图片上传到云存储

关于图片裁剪

  • 原生小程序用image-cropper插件
  • Taro中用taro-cropper插件

在裁剪图片输出结果时,将图片设置为jpg格式,将图片质量设置为0.8~1之间,此时的图片为裁剪后的原图。

在真正发给云环境进行人脸五官分析的图片是继续使用wx.compressImage()为压缩到 10% 质量的的图片。

关于图片压缩

在《图片裁剪、模糊、保存、分享的技巧》中,我写了关于图片压缩的技巧,其中要点为wx.compressImage()的压缩效果不够理想,我还是倾向于看是否能用canvas来压缩图片。

将图片转换为base64格式

const fsm = Taro.getFileSystemManager()

let { data: base64Main } = await fsm.readFileSync({
  filePath: resImage.tempFilePath,
  encoding: 'base64',
})

一般此时图片会从1.5MB以上变为100KB左右,甚至是70KB

PS:Base64数据约为Buffer的1.33倍,但感觉还好

接下来的内容

图像安全审核是小程序中必不可少的一环,而五官分析也是Hi头像小程序的技术核心,这些都将来后面的文章中详细阐述。

← 4.1.1 上篇:借助云存储和图像处理扩展人脸智能裁剪4.2 云开发必备——图像安全审核 →
  • 上一篇文章的步骤
  • 优化后的步骤
    • 关于图片裁剪
    • 关于图片压缩
    • 将图片转换为base64格式
    • 接下来的内容
Hi头像
文档
开篇介绍
相关资源
云开发 CloudBaseTaro
关于
联系我们GitHub主页Star
Copyright © 2020. All Rights Reserved.
沪ICP备2022023998号