微信小程序实现点击拍照长按录像功能

33微信小程序Camera API使用指南:实现拍照与录像功能案例实战详解 本文详细介绍了微信小程序 camera 组件的相关内容,包含 API 方法、使用案例、各文件代码及属性说明。示例涵盖切换摄像头、拍照、录像等功能,能帮助开发者快速上手 camera 组件,实现丰富的拍摄交互效果。 阅读详情
微信小程序实现点击拍照长按录像功能

代码里面注释写的都很详细,直接上代码。官方的组件属性中有触摸开始和触摸结束属性。本功能依靠这些属性实现。

.wxml代码:
<!-- 相机 pages/camera/camera.wxml-->
<!-- 相机 -->
<camera wx:if="{{!videoSrc}}" device-position="back" flash="off" binderror="error" style="width: {{cameraWidth}}px; height: {{cameraHeight}}px;">
  <!-- 拍完显示照片 -->
  <cover-image wx:if="{{image1Src}}" src='{{image1Src}}'></cover-image>
  <cover-view>
    <!-- 拍照按钮 -->
    <button id='btn-photo-video' bindtouchstart="handleTouchStart" bindtouchend="handleTouchEnd" bindlongpress="handleLongPress" bindtap="handleClick">
      点击/长按</button>
  </cover-view>
</camera>
<video wx:if="{{videoSrc}}" src="{{videoSrc}}" controls></video>
.wxss代码:
/* pages/camera/camera.wxss */

cover-image,video {
  margin-top:100%;
  position: absolute;
  width: 200rpx;
  height: 200rpx;
}
#btn-photo-video{
  /* position: absolute; */
  margin-top:100%;
  width: 242rpx;
  left: 2%;
}
.js代码:
// pages/camera/camera.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    cameraHeight: '',
    cameraWidth: '',
    image1Src: '',
    videoSrc: '',
    num: 0,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    //调用设置相机大小的方法
    this.setCameraSize();
    this.ctx = wx.createCameraContext();
    console.log(this.lijiajun)

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  },

  /**
   * 获取系统信息 设置相机的大小适应屏幕
   */
  setCameraSize() {
    //获取设备信息
    const res = wx.getSystemInfoSync();
    //获取屏幕的可使用宽高,设置给相机
    this.setData({
      cameraHeight: res.windowHeight,
      cameraWidth: res.windowWidth
    })
    console.log(res)
  },

  /**
   *拍照的方法 
   */
  takePhoto() {

    this.ctx.takePhoto({
      quality: 'high',
      success: (res) => {
        this.setData({
          image1Src: res.tempImagePath
        })
      },
      fail() {
        //拍照失败
        console.log("拍照失败");
      }
    })
  },

  /**
   * 开始录像的方法
   */
  startShootVideo() {

    console.log("========= 调用开始录像 ===========")
    this.ctx.startRecord({
      success: (res) => {
        wx.showLoading({
          title: '正在录像',
        })
      },
      fail() {
        console.log("========= 调用开始录像失败 ===========")
      }
    })
  },

  /**
   * 结束录像
   */
  stopShootVideo() {

    console.log("========= 调用结束录像 ===========")
    this.ctx.stopRecord({
      success: (res) => {
        wx.hideLoading();
        this.setData({
          videoSrc: res.tempVideoPath,
        })
      },
      fail() {
        wx.hideLoading();
        console.log("========= 调用结束录像失败 ===========")
      }
    })
  },

  //touch start 手指触摸开始
  handleTouchStart:   function(e)  {    
    this.startTime  =  e.timeStamp;    
    console.log(" startTime = "  +  e.timeStamp);  
    console.log(" 手指触摸开始 " ,  e);  
    console.log(" this " , this);  
  },

  //touch end 手指触摸结束
  handleTouchEnd:   function(e)  {    
    this.endTime  =  e.timeStamp;    
    console.log(" endTime = "  +  e.timeStamp);  
    console.log(" 手指触摸结束 ", e);
    //判断是点击还是长按 点击不做任何事件,长按 触发结束录像
    if (this.endTime - this.startTime > 350) {
      //长按操作 调用结束录像方法
      this.stopShootVideo();
    }

  },

  /**
   * 点击按钮 - 拍照
   */
  handleClick:   function(e)  {    
    console.log("endTime - startTime = "  +  (this.endTime  -  this.startTime));        
    if  (this.endTime  -  this.startTime  <  350)  {    
      console.log("点击");
      //调用拍照方法
      this.takePhoto();    
    }
  },

  /**
   * 长按按钮 - 录像
   */
  handleLongPress:   function(e)  {
    console.log("endTime - startTime = "  +  (this.endTime  -  this.startTime));
    console.log("长按");
    // 长按方法触发,调用开始录像方法
    this.startShootVideo();
  },
})

----------------------------- end -----------------------------

鸿蒙应用相机开发:拍照和录像功能实现 在当今的移动应用开发中,相机功能是很多应用必不可少的一部分。比如社交应用可以让用户拍照分享生活,视频应用需要录制精彩的瞬间。我们的目的就是教大家在鸿蒙系统中开发相机应用,实现拍照和录像这两个最常用的功能。范围涵盖了从基础概念到实际代码实现,以及最终的应用部署等方面。本文首先会介绍与相机开发相关的核心概念,解释它们之间的关系,并给出相应的示意图和流程图。接着会详细讲解实现拍照和录像功能的核心算法原理和具体操作步骤,包括数学模型和公式。然后通过项目实战,展示代码的实际案例和详细解释。 阅读详情

相关推荐

微信小程序开发视频,朋友录制的,

微信小程序开发视频,朋友录制的

微信小程序 长按录音+录制视频

【代码】微信小程序 长按录音+录制视频。

coldriversnow的专栏 1279

微信小程序拍照和摄像功能实现方法示例

主要介绍了微信小程序拍照和摄像功能实现方法,结合实例形式分析了微信小程序拍照与摄影功能的原理、相关实现技巧与注意事项,需要的朋友可以参考下

微信小程序之录像功能制作--使用camera组件

不使用小程序自带API(wx.chooseImage)去完成录像功能。

Mr_LiangDaGe的博客 3088

微信小程序实现点击拍照长按录像功能的实现代码

主要介绍了微信小程序实现点击拍照长按录像功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值 ,需要的朋友可以参考下

组态王7.5和SQLsever数据库交互

摘要:本文详细介绍了组态王7.5与SQL Server 2016数据库交互的实现流程,包括建立连接、数据存储与查询操作。主要内容涵盖ODBC数据源配置、数据库表格创建、数据插入及查询功能实现(含日期控件查询)

gsjkwg的博客 1580

微信小程序录制视频功能实现

微信小程序录制视频

weixin_45032067的博客 9601

M2DGR数据集在主流SLAM框架中的实战配置指南:从ORB-SLAM到FAST-LIO的完整流程

本文提供了M2DGR多传感器数据集在主流SLAM框架中的实战配置指南。详细介绍了从ORB-SLAM、VINS-Mono等视觉/视觉惯性框架,到A-LOAM、FAST-LIO等激光/激光惯性框架的完整配置流程、参数调整要点及常见问题解决方案。通过实际测试对比,分析了各算法在M2DGR数据集上的表现,为机器人定位与建图研究提供了宝贵的实战经验。

k9l0m1的博客 481

微信小程序调取相机实现拍照/录屏(带demo)

我已上传demo案例,有需要的童鞋自行下载,项目直接用微信开发者工具打开,主要修改成自己的appid;运行需要编译到pages/ar/scene-ar-germanBusiness1/index 页面后手机预览打开。可能刚打开是白屏,需要等一会,模型加载需要时间。index.json文件代码。index.wxml代码。index.wxml代码。index.js代码。index.js代码。

oneya1的博客 7406

GPU微架构演进分析--从SIMT到Scalar-Vector-Tensor计算的混合配比与调度

GPU架构经历了从专用计算模块到统一可编程处理器的演进。传统GPU面临专用电路配比难题,Nvidia Tesla架构通过引入可编程多线程处理器实现图形与计算的统一。Fermi架构进一步向计算倾斜,随后的架构陆续加入Tensor Core等专用单元。AI时代促成了从图形处理主导向AI计算的转变,形成了Scalar+Vector+Tensor的混合计算范式。SIMT调度重要性降低,CUDA面临新挑战,RISC-V等架构可能带来新机遇。

ChipCamp的博客---https://chipcamp.blog.youkuaiyun.com/ 916

Podman修改镜像源教程(附最新docker镜像源)

Podman修改镜像源教程(附最新docker镜像源)

道长的博客 4141

微信小程序实现点击拍照以及长按录像功能

话不多说,直接上代码,代码里面注释写的都很详细 wxml文件: <!-- 相机 --> <camera wx:if="{{!videoSrc}}" device-position="back" flash="off" binderror="error" class="photo"> <cover-view> <!-- 拍照按钮 --&g...

jiangwei1994的博客 3819

LTE信令流程及业务流程

eNB返回E-RAB建立响应消息,E-RAB建立列表信息中包含成功建立的承载信息,E-RAB建立失败列表消息中包含没有成功建立的承载消息。3)当下行数据达到时,网络侧先对UE进行寻呼,随后UE发起随机接入过程,并发起service request过程。用户面:S-GW向eNB发送承载建立请求,包含(IMSI, QoS, TFT, TEID, LBI等)控制面:MME向eNB发送E-RAB建立请求,包含E-RAB ID,QoS,S-GW TEID。3)在S1接口上建立S1承载,在Uu接口上建立数据无线承载。

qq_44390640的博客 4582

小程序点击调转带参数_微信小程序之点击列表的item带参数跳转界面

1.在js文件里写个界面跳转的事件处理函数gotableinfo,var index = parseInt(e.currentTarget.dataset.index); 为获取当前点击列表的下脚标,wx.navigateTo为小程序提供的界面路由跳转的方法,参数url为要跳转页面的连接(?后面为连接携带的参数)2.data-index="{{index}}"为标记列表的下脚标,index的来源与...

weixin_39905695的博客 271

Vue3+Element Plus:构建现代化后台管理系统的核心布局实践

本文详细介绍了使用Vue3和Element Plus构建现代化后台管理系统的核心布局实践。从开发环境搭建到核心布局设计,再到动态菜单与路由集成,提供了完整的解决方案和优化技巧。特别适合需要快速开发高效、响应式后台系统的开发者,通过实战案例展示了如何提升开发效率和系统性能。

weixin_28309723的博客 459

如何利用通达信进行选股集合操作

每个交易者实际上都有自己的选股策略,这是必然的,也会有自己的主观干预,但是还是需要从客观热点股票进行一个比对的,才能说主观和客观相结合不至于​偏离方向。 这几天我也发了节前最后一天我的选股策略盘中的选择结果, 我也从网上拿到了热点股票池,当拿到之后你会发现如何从几十个股票热点股票选出核心票,这就是个问题了,这里面一定要通过股价涨跌幅来进行过滤,而不是通过指标,因为一切指标都是根据价格变化而改变的了,所以​这一步不要走弯路。 1、把拿到的热点股票名单,导入通达信自定义板块 2、删除

抢财猫股票课堂 2583

微信小程序开发(2) - 微信小程序实现拍照和录像拍摄功能方法

本文实例讲述了微信小程序实现拍照和摄像功能方法。分享给大家供大家参考,具体如下: 微信小程序拍照: API:wx.chooseImage 原先的想法是使用微信的camera组件来实现,并且模拟发朋友圈的样子来进行相机的设置,其实就是将camera组件的大小设置成根屏幕一样大,并在上面使用一个cover-image组件来给用户进行点击,可是实际上的情况是第一,cover-image组件有时候会消失,第二,整个流程实现起来很僵硬,页面跳转也是卡的要死,后来无意间发现了另一个API:wx.chooseImag

程序人生 6152

LeRobot X-VLA:首个适用于任意机器人、任意任务的软提示机器人基础模型

X-VLA是一种基于软提示的视觉-语言-动作模型,通过可学习嵌入向量编码不同机器人配置,实现跨平台统一控制。该框架采用两阶段训练:先在29万次多平台任务中学习通用策略,再通过微调少量参数(仅1%)适配新机器人。实验表明,0.9B参数的X-VLA在6个仿真和3个真实平台上表现优异,如LIBERO任务达93%成功率,布料折叠任务100%完成。其核心创新是将硬件差异视为"任务",用软提示引导Transformer处理异构数据,为机器人基础模型提供可扩展方案。

2506_90492529的博客 1241

微信小程序开发之——拍照和录像

一 概述 微信小程序中,与相机相关的组件是媒体组件camera 调用系统相机拍照 调用系统相机录像 调用系统相机扫码 二 camera相关属性 属性 类型 默认值 说明 mode string normal 应用模式,只在初始化时有效,不能动态变更 resolution string medium 分辨率,不支持动态修改 device-position string back 摄像头朝向 flash string auto 闪光灯,值为auto, on, off fra

我的博客 4348

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Taro摄像头使用:多端拍照与录像功能

在移动应用开发中,摄像头功能是用户交互的重要组成部分。然而,不同平台(微信小程序、H5、React Native等)的摄像头API差异巨大,开发者在实现拍照、录像功能时常常面临: - **API不统一**:各平台调用方式迥异 - **权限处理复杂**:不同平台的权限申请机制不同 - **用户体验差异**:界面风格和交互方式需要适配 - **性能优化困难**:多端性能表现不一致 Taro作为开放...

gitblog_00297的博客 818

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【微信小程序】底部操作菜单与拍照录像

这篇文章要解决三个问题: 底部操作菜单 自定义按钮“点按拍照,长按拍摄” 调用朋友圈的API实现“点按拍照,长按拍摄” 第一部分 当点击“上传资料”按钮的时候,要从底部弹出操作菜单栏。 <button type="primary" bindtap="openActionsheet">上传资料</button> Page({ data: {}, onLoad: function (options) {}, openActionsheet: function () {

'Ablaze 的专栏 698

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

uniapp开发微信小程序-实现授权、拍照、录像、录音上传相关文件

uniapp开发微信小程序-实现授权、拍照、录像、录音上传相关文件

初心 2032
上一篇: tomcat配置https以及配置完成后提示服务器缺少中间证书(已解决)
下一篇: Unable to start embedded Tomcat(已解决)
java小安然
博客等级 码龄8年 180粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值