HBuilder webApp开发(四)相册/拍照-图片上传
来源:互联网 发布:matlab支持c语言吗 编辑:程序博客网 时间:2024/05/18 01:50
在做项目的过程中,需要从相册或是拍照,然后上传,比如修改用户头像或是上传项目图片。
效果图
点击用户头像后,弹出actionSheet,选着从相册或是拍照;选着图片后就调用上传方法,上传图片;在上传之前先压缩了一下图片。
使用流程
弹出actionSheet
/*点击头像触发*/ document.getElementById('headImage').addEventListener('tap', function() { if (mui.os.plus) { var a = [{ title: "拍照" }, { title: "从手机相册选择" }]; plus.nativeUI.actionSheet({ title: "修改用户头像", cancel: "取消", buttons: a }, function(b) { /*actionSheet 按钮点击事件*/ switch (b.index) { case 0: break; case 1: getImage(); /*拍照*/ break; case 2: galleryImg();/*打开相册*/ break; default: break; } }) } }, false);
拍照上传
//拍照 function getImage() { var c = plus.camera.getCamera(); c.captureImage(function(e) { plus.io.resolveLocalFileSystemURL(e, function(entry) { var s = entry.toLocalURL() + "?version=" + new Date().getTime(); uploadHead(s); /*上传图片*/ }, function(e) { console.log("读取拍照文件错误:" + e.message); }); }, function(s) { console.log("error" + s); }, { filename: "_doc/head.png" }) }
从相册选图上传
//本地相册选择 function galleryImg() { plus.gallery.pick(function(a) { plus.io.resolveLocalFileSystemURL(a, function(entry) { plus.io.resolveLocalFileSystemURL("_doc/", function(root) { root.getFile("head.png", {}, function(file) { //文件已存在 file.remove(function() { console.log("file remove success"); entry.copyTo(root, 'head.png', function(e) { var e = e.fullPath + "?version=" + new Date().getTime(); uploadHead(e); /*上传图片*/ //变更大图预览的src //目前仅有一张图片,暂时如此处理,后续需要通过标准组件实现 }, function(e) { console.log('copy image fail:' + e.message); }); }, function() { console.log("delete image fail:" + e.message); }); }, function() { //文件不存在 entry.copyTo(root, 'head.png', function(e) { var path = e.fullPath + "?version=" + new Date().getTime(); uploadHead(path); /*上传图片*/ }, function(e) { console.log('copy image fail:' + e.message); }); }); }, function(e) { console.log("get _www folder fail"); }) }, function(e) { console.log("读取拍照文件错误:" + e.message); }); }, function(a) {}, { filter: "image" }) };
图片上传和压缩
//上传头像图片 function uploadHead(imgPath) { console.log("imgPath = " + imgPath); mainImage.src = imgPath; mainImage.style.width = "60px"; mainImage.style.height = "60px"; var image = new Image(); image.src = imgPath; image.onload = function() { var imgData = getBase64Image(image); /*在这里调用上传接口*/// mui.ajax("图片上传接口", {// data: {// // },// dataType: 'json',// type: 'post',// timeout: 10000,// success: function(data) {// console.log('上传成功');// },// error: function(xhr, type, errorThrown) {// mui.toast('网络异常,请稍后再试!');// }// }); } } //将图片压缩转成base64 function getBase64Image(img) { var canvas = document.createElement("canvas"); var width = img.width; var height = img.height; // calculate the width and height, constraining the proportions if (width > height) { if (width > 100) { height = Math.round(height *= 100 / width); width = 100; } } else { if (height > 100) { width = Math.round(width *= 100 / height); height = 100; } } canvas.width = width; /*设置新的图片的宽度*/ canvas.height = height; /*设置新的图片的长度*/ var ctx = canvas.getContext("2d"); ctx.drawImage(img, 0, 0, width, height); /*绘图*/ var dataURL = canvas.toDataURL("image/png", 0.8); return dataURL.replace("data:image/png;base64,", ""); }
总结
在使用中,我们可以发现,使用流程是非常清晰的;某种程度来说比原生iOS的使用还要简单一些。
代码下载地址:请点击我!
0 0
- HBuilder webApp开发(四)相册/拍照-图片上传
- Hbuilder mui 相册拍照图片上传
- Android开发——相册拍照_04.图片上传
- HBuilder webApp开发(五)图片墙/图片预览
- 图片拍照上传和相册选取
- 利用 AFN 上传相册或拍照图片
- Android开发:相册读取、拍照、图片裁剪和图片上传服务器等功能的实现
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- 拍照上传图片与从相册中选择图片上传
- Android开发之头像上传(包含拍照,从相册选择图片,裁剪等)
- angularjs手机webapp 利用input拍照,图库选择上传图片
- 图片上传,包括从相册选取与拍照上传
- AFNetworking 上传图片 (相册、拍照,并且图片可裁剪)
- 上传头像 拍照 相册
- hdu_3565_Bi-peak Number(数位DP)
- java学习总结(16.06.03)java中数组的定义和初始化
- 学习新东西的唯一方法
- c++中string 与 double或int之间的转换
- 数据结构之最小/大堆
- HBuilder webApp开发(四)相册/拍照-图片上传
- ubuntu下安装dlib
- IOS动画简介
- 【一天一道LeetCode】#79. Word Search
- C# 监控粘贴板、总在最前代码
- 锂电池基本原理解析:充电及放电机制
- linux高级原7
- selenium学习日记-页面元素的Actions
- 角点检测