设计思路:

调用camera相机组件,用cover-view,cover-image标签添加自定义页面布局,拍完照之后将照片画到canvas里面,然后用canvasToTempFilePath方法导出需要的图片。

html部分

<camera device-position="back" flash="off" style='width:100%; height:100vh;'><cover-view class="camera-view"><cover-view class="title">{{title}}</cover-view><cover-image class='bgImage' src='@/static/camarebg.png'> </cover-image><cover-image class='takephoto' src='@/static/btn.png' @tap="takePhoto()"> </cover-image></cover-view></camera><canvas v-show='showImage' canvas-id="canvas" style='width:1000px; height:1500px;'></canvas>

调用uni-app的camera组件全屏化相机,用cover-view,cover-image标签添加自定义页面布局,同时准备一个canvas,用来处理图片,遮罩层和拍照按钮使用图片即可,canvas的大小为什么这么设置下面再讲。

data部分

data() {return {title: '',ctx: null,path: "",image: "",showImage: false}},

在onload时加载相机组件

onLoad() {  this.ctx = uni.createCameraContext();
},

拍照

takePhoto(){this.ctx.takePhoto({quality: 'high',success: (res) => {this.imageChange(res)}});},

图片处理

imageChange(options) {var that = this//原图片信息var _width = options.widthvar _height = options.heightthat.path = options.tempImagePath//需要的图片信息var image_x = parseInt(_width * 0.1);var image_y = parseInt(_height * 0.09);var image_width = parseInt(_width * 0.8);var image_height = parseInt(_height * 0.87);uni.getImageInfo({src: that.path,success: function(res) {that.showImage = true//将原图画到canvas上面that.canvas = uni.createCanvasContext("canvas", that)that.canvas.drawImage(that.path, 0, 0, _width, _height)uni.showLoading({title: '数据处理中...',icon: 'loading',duration: 10000})that.canvas.draw()setTimeout(function() {//导出自己需要的图片uni.canvasToTempFilePath({ canvasId: "canvas",x: image_x, y: image_y, width: image_width, height: image_height, destWidth: image_width, destHeight: image_height, success: function(res) {that.image = res.tempFilePath //处理好的图片uni.hideLoading()//TODO........},fail: function(e) {uni.hideLoading()uni.showToast({title: '出错啦...',icon: 'loading'})}});}, 1000);}})}

拍出来的原始照片大小是根据手机屏幕的分辨率计算的,js获取到的是屏幕大小,本人也试过调用uni.getSystemInfo获取系统信息,里面并没有屏幕的分辨率大小,只有屏幕大小,所以我将canvas画布设置到足够大,使原图片可以完全绘制进去,然后使用百分比将需要的部分摘出来。第一次做自定义相机,若有什么不对的地方,希望各位大佬及时指出。

uni-app自定义相机相关推荐

  1. uni app 自定义 头部组件(2) 局部 右侧按钮

    上一篇为完全的自定义头部 链接:https://blog.csdn.net/qq_37403179/article/details/102955419 本片则是使用uniapp已有的自定义方法给头部添 ...

  2. uni app 手机端导航栏自定义

    uni app 手机端导航栏自定义 第一步:明确顶部导航栏的构成(手机自带的顶部菜单+开发的顶部菜单栏) 获取手机自带的顶部导航栏 <view class="navigation_ba ...

  3. android使用自定义相机避开部分小米手机app调用系统相机有水印会转向的问题

    1.需求 我们要求很简单,就是拍照后显示效果要横屏拍的横着显示,竖屏拍着竖屏显示.但是我的手机小米5x等小米型号,存在横竖使用系统相机拍摄都是横屏显示的问题.更惨的是获取旋转角度什么的始终是0,没办法 ...

  4. uni开发微信小程序自定义相机自动检测(人像+身份证)

    之前开发过微信小程序自定义相机拍照检测人像和身份证检测.一直期望写篇文章记录一下,趁现在有点时间,总结一下. 需求点: 1.能够自定拍摄人像 2.能够自动拍摄身份证正面照 3.识别身份证并且和人脸照比 ...

  5. IOS 自定义相机, 使用 AVFoundation(附实现部分腾讯水印相机功能 demo)

    原文链接:http://www.jianshu.com/p/c64bf543f16a 这是一款使用 AVFoundation 自定义的相机,与系统原生相机有一样的外观但比系统的相机更好.更符合实际的开 ...

  6. android 实现自动拍照,Android自定义相机实现定时拍照功能

    这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能. 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: activity_main.xml andro ...

  7. android 自定义相机源码,Android 自定义相机及分析源码

    Android 自定义相机及分析源码 使用Android 系统相机的方法: 要想让应用有相机的action,咱们就必须在清单文件中做一些声明,好让系统知道,如下 action的作用就是声明action ...

  8. Android添加拍照功能,Android自定义相机,添加水印

    很多app都要求自定义一个相机,类似违章查询拍照,美图相机之类的应用都要求自定义相机,网上的例子大多数我也看过,很多例子是有坑的,存在各种各样的问题,常见的就是问题就是适配性很差,这里我分享一下我做的 ...

  9. Android 自定义相机

    概述 相机几乎是每个APP都要用到的功能,万一老板让你定制相机方不方?反正我是有点方.关于相机的两天奋斗总结免费送给你. 启动相机的两种方式 1.直接启动系统相机 Intent intent = ne ...

  10. Android自定义相机实现定时拍照

    这篇博客为大家介绍Android自定义相机,并且实现倒计时拍照功能. 首先自定义拍照会用到SurfaceView控件显示照片的预览区域,以下是布局文件: activity_main.xml <F ...

最新文章

  1. Mysql memory表引擎
  2. mysql 安装dso命令_使用tengine DSO 来动态编译安装第三方模块(Lua
  3. IAR STM32工程报错Error[Pe020]: identifier “GPIO_Pin_0”is undefined D:\STM32F103_Demo\App\main.c
  4. html左侧黑色梯形状线条,html – 使用纯css左,下,左边的线条绘制动画
  5. 编程通用知识 系统编程
  6. heartbeat双机热备配置(适用centos6\rhel6)
  7. python全栈学习--day13(迭代器,生成器)
  8. dos攻击工具如何使用?两款dos攻击工具介绍
  9. mysql2014汉化版_SQLServer2014企业版下载
  10. 从借呗借了100元,看背后的系统架构
  11. 什么是开环控制?什么是闭环控制?它们有什么区别?
  12. SQL注入:sqli-labs lesson-8 lesson -9 基于布尔值和基于时间的盲注!
  13. 云服务器系统一键安装,一键安装服务器系统
  14. 基础课程11:调试工具
  15. Python 库pyautogui 0.9.52的下载、安装和使用
  16. 从软件工程师到IT猎头续:告诉你如何写简历
  17. 写了Bug,误执行 rm -fr /*,我删删删删库了,要跑路吗?
  18. android 图片占用内存的计算
  19. HDU - 1613 Ecological Bin Packing
  20. 7.3 cas与流量风暴

热门文章

  1. LeetCode #77 组合
  2. XMLHttpRequest API
  3. Linux: 微软、苹果、EMC和甲骨文获得822项Novell专利
  4. 脉冲多普勒雷达设计附matlab代码
  5. 机器学习之随机森林(手推公式版)
  6. 免安装chrom浏览器
  7. local cell id和cell id区别
  8. 思一独角兽游戏 | 综艺高能玩家:看中医刘昊然、区块链圈90后CEO如何玩转高智商棋牌游戏 | SIU
  9. 广和通5G模组成功联调基于高通IPQ系列+骁龙X62的5G CPE方案,已实现大规模量产
  10. 家乡主题网页设计代码 旅游主题网页设计 html静态网页设计制作 dw静态网页成品模板素材网页 web前端网页设计与制作 div静态网页设计