我是判断照片的宽高比用画布重新渲染。

一开始想用wx.getImageInfo() 接口获取EXIF的值然后在判断旋转多少度,但是这个接口返回的orientation 字段返回都是up,所以弃用这个方法。

我的方法是使用 小程序自带的 wx.getFileSystemManager() API接口获取base64格式的照片,然后用画布重新渲染(其中包括如何使用小程序画布),后台需要解析身份证,正好也需要base64格式的数据。还有一个问题,就是只能将EXIF(https://www.jb51.net/html5/639934.html)为6的照片选择270度横向显示,其他情况不能正常显示。话不多说,上代码:

//上传身份证照片

uploadIdcard: function (e) {

var that = this

const front = wx.createCanvasContext('front')

const back = wx.createCanvasContext('back')

//定义为px单位

var imgWidth = 300;

var imgHeight = 150;

wx.chooseImage({

count: 1,

sizeType: ['compressed'],

sourceType: ['album', 'camera'],

success: function (res) {

wx.showLoading({

title: '上传中',

})

wx.getFileSystemManager().readFile({

filePath: res.tempFilePaths[0], //选择图片返回的相对路径

encoding: 'base64', //编码格式

success(base) {

wx.request({

url: app.globalData.httpsUrl + '/******',

data: {

personInfo: JSON.stringify(util.getcache('personInfo')),

data: 'data:image/png;base64,' + base.data,

},

method: 'POST',

header: {

'Content-Type': "application/x-www-form-urlencoded"

},

success: function (data) {

console.log(data.data)

if (data.data.respCode == 1) {

//识别成功,画出照片

wx.getImageInfo({

src: res.tempFilePaths[0],

success: function (info) {

console.log(info)

//旋转

//正面照

if (e.currentTarget.dataset.sign == 1) {

if (info.height > info.width) {

console.log('旋转270度')

front.rotate(270 * Math.PI / 180);

front.drawImage(res.tempFilePaths[0], -150, 0, imgHeight, imgWidth)

} else {

front.drawImage(res.tempFilePaths[0], 0, 0, imgWidth, imgHeight, 0, 0)

}

front.draw()

} else if (e.currentTarget.dataset.sign == 2) {

//反面照

if (info.height > info.width) {

console.log('旋转270度')

back.rotate(270 * Math.PI / 180);

back.drawImage(res.tempFilePaths[0], -150, 0, imgHeight, imgWidth)

} else {

back.drawImage(res.tempFilePaths[0], 0, 0, imgWidth, imgHeight, 0, 0)

}

back.draw()

}

wx.hideLoading()

}

})

if (data.data.data.type == 1) {

that.setData({

name: data.data.data.name,

cardno: data.data.data.cardno

})

}else{

that.setData({

time: data.data.data.validdate1 + '-' + data.data.data.validdate2,

})

}

} else {

wx.showToast({

icon: 'loading',

title: data.data.respMsg,

})

}

}

})

}

})

},

})

},

//页面

<view class="container">

<view class='front' bindtap='uploadIdcard' data-sign='1'>

<canvas canvas-id='front'></canvas>

</view>

<view class='back' bindtap='uploadIdcard' data-sign='2'>

<canvas canvas-id='back'></canvas>

</view>

</view>

<view class='text'>{{name}}</view>

<view class='text'>{{cardno}}</view>

<view class='text'>{{time}}</view>

小程序上传身份证正反照,竖排照片横向展示相关推荐

  1. 阿里云 aliyun 人脸识别(1:N) java spring 小程序 小程序上传多图 阿里云oss

    前段时间开发一个小程序需要使用到阿里云(1:N)人脸识别的服务,查询资料发现网上并没有详细的教程,而官方的api文档也写得很简略,于是就有了如下教程,希望能帮助到大家. 目录 服务开通 人脸识别服务开 ...

  2. 小程序 php转excel,做微信小程序上传数据 数据格式?-微信 上传数据 生成excle

    做微信小程序上传数据 数据格式? 建议找人专门制作设计好,专业的事情交给专业的人做,自己浪费时间还不一定能搞好 如何把微信里的excel传到qq上 1.在手机中先箭头所示的"微信" ...

  3. 微信小程序上传文件到阿里OSS教程

    前言 (一)开通OSS服务与新建Bucket 开通OSS服务这里省略,新建bucket. (二)设置Bucket属性,后台配置域名 上传文件访问域名 这里我们要在小程序后台配置上传域名(上面的域名是我 ...

  4. 微信小程序上传Excel文本文件功能

    问题: 在开发过程中会发现微信小程序有很多功能都还不能满足我们的需求,谁叫客户就是上帝呢,前几天小编遇到了这么个问题,就是用微信小程序上传文件,但是还以为微信带有这个模块,可是查了许久还是没有找到,只 ...

  5. 《微信小程序-证件照换底色》之二:用pycharm搭建django框架来接收微信小程序上传的图片

    用pycharm搭建django框架来接收微信小程序的图片 上一篇:微信云开发实现每个用户在云端上传并且下载自己对应的图片 链接: https://blog.csdn.net/qq_44933075/ ...

  6. 微信小程序上传文件到自己的服务器

    微信小程序上传文件到自己的服务器 1.建立 WebApi项目 (1)创建项目 (2)发布项目 2.后端接口代码 3.小程序端调接口 1.建立 WebApi项目 (1)创建项目 选择菜单 "文 ...

  7. 小程序上传文件到阿里云oss

    本文仅举例上传图片和上传视频! 准备工作: 需要引入的js文件:https://download.csdn.net/download/impossible1994727/12328614 参考文档:h ...

  8. 微信小程序上传阿里云视频文件流程及代码

    为了微信小程序客服端实现自拍视频能够分享给多个好友,我们需要把小程序自拍的视频存储到服务器,而阿里云在性能和速度上比较不错,所以我们选择了阿里云作服务器. 第一步.微信小程序项目创建 1. 到http ...

  9. 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决

    目录 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决 1.上传时没有勾选保护 2.请求的域名没有配置 问题: 微信小程序上传后 进行性手机扫码阅览 发现白屏的解决 1.上传时没有勾选保护 ...

  10. 钉钉小程序上传附件(PDF等非媒体文件)至第三方文件服务器(企业内部应用)

    1.创建钉盘空间并获取spaceId (1).创建钉盘空间 进入钉钉选择"云盘",点击"团队文件"然后新建一个文件夹,给当前钉钉团队所有用户(或者能够使用该企业 ...

最新文章

  1. vue 往对象中添加键值对_【Vue】Vue学习之混入
  2. 大家好,给大家介绍一下,我们的主题歌 @虾米音乐
  3. 几则常用的BASIS技巧整理
  4. Android Studio git 版本回退到最新的版本
  5. 关于阅读java编程思想和effective java的一些看法
  6. IOS pushViewController如何去隐藏tabbar
  7. 最优化课程笔记07——约束问题的非线性规划方法(重点:拉格朗日乘子法和惩罚函数法)
  8. 晨读,难道只是为了完成任务而读的吗?
  9. 工行黄金递延业务AU(T+D)风险问题答案
  10. orcale建表,创建字段id使其自增
  11. InstallShield 2015 Limited Edition 打包教程
  12. java 工作流引擎调研总结
  13. AM5728配置DMM_LISA_MAP修改内存工作模式
  14. 视频号如何使用OBS推流?
  15. 如何理解容器,容器化的由来?它有何优缺点?
  16. html简单情侣对话
  17. ODOO 进出口外贸行业解决方案
  18. QR分解的三种实现方法
  19. 电脑开机显示“Windows\system\vgaoem.fon”丢失的解决方法
  20. 无监督学习——K均值聚类的Python实现

热门文章

  1. 百度这个写在控制台的消息:2021百度校招
  2. 如何快速打开控制面板?如何让控制面板在桌面显示?
  3. c语言用标准体重判断是否,输入身高、体重、性别,判断是否是标准体重,男性标准=(身高-100)+-3,女性标准=(身高-110)+-3...
  4. 2019 JAVA面试题附答案
  5. PCIE实现PIO模式寄存器读写调试记录
  6. 随机数字表法计算机分配,随机数表法.ppt
  7. ACM常用算法模版(常用函数与STL、重要公式与定理)
  8. 搜狐老矣,尚能饭否?
  9. html旋转木马 代码,JavaScript实现旋转木马轮播图
  10. L4RE学习笔记——服务介绍