热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

实际项目移动端调用摄像头获取照片加水印

H5移动端打开摄像头和打开相册参考文档:http:www.html5plus.orgdoczh_cncamera.html!!ÿ

H5移动端打开摄像头和打开相册

参考文档:http://www.html5plus.org/doc/zh_cn/camera.html
!!!plus在PC端运行时会报错,只有打包后在手机端运行时才能运行

//选择打开摄像头还是打开相册takePhoto(){let that = this;let bts = [{title: "拍照"},{title: "从相册选择"}];plus.nativeUI.actionSheet({cancel: "取消",buttons: bts},function(e) {if (e.index == 1) {that.getCamera();} else if (e.index == 2) {that.getImg();}});},
//打开摄像头
getCamera(){let that = this;let cmr = plus.camera.getCamera();//这里配置其实不起作用let res = cmr.supportedImageResolutions[14];let fmt = cmr.supportedImageFormats[0];cmr.captureImage(function(path){//获取拍照后的真实地址plus.io.resolveLocalFileSystemURL(path,function(entry) {//通过URL参数获取目录对象或文件对象console.log("拍照获取的真实路径",entry.fullPath)that.takeImgs.push(entry.fullPath);//直接可以显示的类型var imgSrc = entry.toLocalURL();//获取目录路径转换为本地路径URL地址console.log("imgSrcimgSrc",imgSrc)that.takeImgSrc.push(imgSrc);//URL地址型方便于转换base64},function(e) {console.log(e.message);},{ resolution: res, format: fmt });})},//打开相册getImg(){let that = this;plus.gallery.pick(function(path) {that.takeImgs.push(path);that.takeImgSrc.push(path);},function(e) {console.log("取消选择图片");},{ filter: "image" });},

以上就是如何在移动端打开摄像头和相册获取照片的方式。但是在实际项目可能后端想要的图片格式是不确定的,可能是base64.可能是file文件对象,所以我们要对获取到的照片处理成相对应的格式

/* 照片转码成base64加上时间水印 */getBase64Time(url){let that &#61;this;return new Promise((resolve,reject)&#61;>{//异步处理let canvas &#61; document.createElement("canvas"),ctx &#61; canvas.getContext("2d"),image &#61; new Image(),fontSize,//水印的大小MAX_WH &#61; 800;//图片的最大宽高比&#xff0c;因为在以上方法中获取的照片size太大&#xff0c;上传时耗时太多所以需要做处理image.crossOrigin &#61; "Anonymous";image.onload &#61; function() {//这里是一个异步&#xff0c;所以获取到的base64文件需要用回调if (image.height>MAX_WH) {image.width *&#61; MAX_WH/image.height;image.height &#61; MAX_WH}if (image.width>MAX_WH) {image.height *&#61; MAX_WH/ image.width;image.width &#61; MAX_WH;}canvas.height &#61; image.height;canvas.width &#61; image.width;ctx.drawImage(image, 0, 0,image.width,image.height);if(image.width>100 && image.width<500){fontSize &#61; &#39;24px&#39;}else if(image.width>&#61;500 && image.width<1000){fontSize &#61; &#39;44px&#39; }else if(image.width>&#61;1000 && image.width<1500){fontSize &#61; &#39;64px&#39;}ctx.font &#61;&#96;${fontSize} Arial&#96;;ctx.fillStyle &#61; "tomato"; let time &#61; that.getCurrnetTime("timeSign");//获取当前的时间ctx.textAlign &#61; "end";ctx.textBaseline &#61; "middle";ctx.fillText(time,image.width-20,image.height-60);let dataURL &#61; canvas.toDataURL( "image/png/jpg"); if(dataURL) {resolve(dataURL)}else{reject("err")}};image.src &#61; url})},//调用此方法之后文件就转为base64格式了

如需要file文件格式&#xff0c;见https://blog.csdn.net/weixin_42307283/article/details/103613682


推荐阅读
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • t-io 2.0.0发布-法网天眼第一版的回顾和更新说明
    本文回顾了t-io 1.x版本的工程结构和性能数据,并介绍了t-io在码云上的成绩和用户反馈。同时,还提到了@openSeLi同学发布的t-io 30W长连接并发压力测试报告。最后,详细介绍了t-io 2.0.0版本的更新内容,包括更简洁的使用方式和内置的httpsession功能。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 模板引擎StringTemplate的使用方法和特点
    本文介绍了模板引擎StringTemplate的使用方法和特点,包括强制Model和View的分离、Lazy-Evaluation、Recursive enable等。同时,还介绍了StringTemplate语法中的属性和普通字符的使用方法,并提供了向模板填充属性的示例代码。 ... [详细]
  • JavaScript和HTML之间的交互是经由过程事宜完成的。事宜:文档或浏览器窗口中发作的一些特定的交互霎时。能够运用侦听器(或处置惩罚递次来预订事宜),以便事宜发作时实行相应的 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • JS实现一键分享功能
    本文介绍了如何使用JS实现一键分享功能,并提供了2019独角兽企业招聘Python工程师的标准。同时,给出了分享到QQ空间、新浪微博和人人网的链接。 ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • Asp.net Mvc Framework 七 (Filter及其执行顺序) 的应用示例
    本文介绍了在Asp.net Mvc中应用Filter功能进行登录判断、用户权限控制、输出缓存、防盗链、防蜘蛛、本地化设置等操作的示例,并解释了Filter的执行顺序。通过示例代码,详细说明了如何使用Filter来实现这些功能。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记
    本文介绍了大数据Hadoop生态(20)MapReduce框架原理OutputFormat的开发笔记,包括outputFormat接口实现类、自定义outputFormat步骤和案例。案例中将包含nty的日志输出到nty.log文件,其他日志输出到other.log文件。同时提供了一些相关网址供参考。 ... [详细]
author-avatar
天凉好个秋骄阳_213
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有