var IMAGE_UNSPECIFIED = "image/*";

var PHOTOZOOM = 2; // 获取完图片返回key

var PHOTOLAT = 1; // 剪裁完毕后返回key

var main;

var Intent;

var MediaStore;

var File;

var Uri;

var wt;

var task;

var outPutPath;//图片路径

//临时的服务区位置

// 上传文件

function upload(fullurl) {

if(!fullurl){

return;

}

document.getElementById('image-list').innerHTML = '';

wt = plus.nativeUI.showWaiting();

task = plus.uploader.createUpload(GV['URL']['AJAX'] + 'huodongtupian.php', //服务端的URL

{

method: "POST"

},

function(t, status) { //上传完成

if (status == 200) {

//到时候把t.responseText解析成json就好

var dt = JSON.parse(t.responseText);

if (dt.error == 0) {

// sdk.obj('authorimg').src=dt.data.avatar;

// mui.fire(plus.webview.getWebviewById('person/index.html'),'selfCallBack',null);

wt.close();

gid('fenmian').value = dt.files;

plus.nativeUI.toast('上传成功');

}

} else {

plus.nativeUI.toast('上传失败');

wt.close();

}

}

);

task.addFile(fullurl, {

key: 'avatar'

});

// task.addData("user_logo",global.getStorage('user_logo'));

task.start();

}

// 从相册中选择图片,并裁剪

function galleryImg() {

var intent = new Intent(Intent.ACTION_PICK, null);

intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_UNSPECIFIED);

console.log(intent);

main.startActivityForResult(intent, PHOTOZOOM);

//

main.onActivityResult = function(requestCode, resultCode, data) {

if (PHOTOZOOM == requestCode) {

//输出的文件目录

outPutPath = plus.io.convertLocalFileSystemURL("_downloads/images/5"+parseInt(Math.random()*(99999-10000+1)+1000)+".jpg");

var file = new File(outPutPath);

// 输出目录uri

var outPutUri = Uri.fromFile(file);

plus.android.importClass(data);

var uri = data.getData();

console.log("uri:" + uri);

var cropIntent = new Intent("com.android.camera.action.CROP");

cropIntent.setDataAndType(uri, IMAGE_UNSPECIFIED);

// 截图完毕后 输出目录

cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);

cropIntent.putExtra("crop", "true");

// aspectX aspectY 是宽高的比例

cropIntent.putExtra("aspectX", 40);

cropIntent.putExtra("aspectY", 55);

// outputX outputY 是裁剪图片宽高

cropIntent.putExtra("outputX", 400);

cropIntent.putExtra("outputY", 550);

cropIntent.putExtra("return-data", true);

main.startActivityForResult(cropIntent, PHOTOLAT);

} else if (requestCode == PHOTOLAT) {

// 判断 剪裁完后的图片输出是否存在

// var _file = new File(outPutPath);

// sdk.obj('authorimg').src=outPutPath;

// console.log(outPutPath);

//这里是否存在的判断还是需要的

// var a = _file.exists();

//查看本地是否有缓存图片 进行删除

// _file.remove( function ( entry ) {

// plus.console.log( "Remove succeeded" );

// }, function ( e ) {

// alert( e.message );

// });

//压缩图片

// plus.zip.compressImage({

// src:outPutPath,

// dst:"_doc/header.jpg",

// quality:20

// },

// function() {

// alert("Compress success!");

// },function(error) {

// alert("Compress error!");

// });

//上传头像->然后进行处理,上传完毕之后 需要删除头像图片

// 判断 剪裁完后的图片输出是否存在

var _file = new File(outPutPath);

var a = _file.exists();

if(a){

upload(outPutPath);

}else{

mui.toast('上传失败')

}

}

};

}

//拍照获取

function getImage() {

//开始拍照

var cmr = plus.camera.getCamera();

cmr.captureImage(function(p) {

//拍照成功调用的函数

plus.io.resolveLocalFileSystemURL(p, function(entry) {

// upload(entry.toLocalURL());

// plus.zip.compressImage({

// src:entry.toLocalURL(),

// dst:"_doc/a.jpg",

// clip:{top:"25%",left:"25%",width:"50%",height:"50%"} // 裁剪图片中心区域

// },

// function() {

// alert("Compress success!");

// },function(error) {

// alert("Compress error!");

// });

//裁剪

outPutPath = plus.io.convertLocalFileSystemURL("_downloads/images/5"+parseInt(Math.random()*(99999-10000+1)+1000)+".jpg");

var file = new File(outPutPath);

// 输出目录uri

var outPutUri = Uri.fromFile(file);

//拍照回来的绝对路径

var path = entry.toLocalURL();

//去掉\\或者file://

path = path.replace("\\", "");

path = path.replace("file://", "");

var _file = new File(path);

var a = _file.exists();

// alert(a);

//绝对路径转uri

var curCropUri = Uri.fromFile(new File(path));

console.log("uri:" + curCropUri);

//裁切

var cropIntent = new Intent("com.android.camera.action.CROP");

cropIntent.setDataAndType(curCropUri, IMAGE_UNSPECIFIED);

// 截图完毕后 输出目录

cropIntent.putExtra(MediaStore.EXTRA_OUTPUT, outPutUri);

cropIntent.putExtra("crop", "true");

// aspectX aspectY 是宽高的比例

cropIntent.putExtra("aspectX", 40);

cropIntent.putExtra("aspectY", 55);

// outputX outputY 是裁剪图片宽高

cropIntent.putExtra("outputX", 64);

cropIntent.putExtra("outputY", 64);

cropIntent.putExtra("return-data", true);

main.startActivityForResult(cropIntent, 1);

main.onActivityResult = function(requestCode, resultCode, data) {

//裁剪成功图片上传

// upload(outPutPath);

// // 判断 剪裁完后的图片输出是否存在

var _file2 = new File(outPutPath);

console.log(outPutPath);

var a2 = _file2.exists();

// alert(a2);

if(a2){

upload(outPutPath);

}else{

mui.toast('上传失败')

}

};

//上传

}, function(e) {

console.log("读取拍照文件错误:" + e.message);

});

}, function(e) {

console.log("失败:" + e.message);

}, {

filename: "_doc/camera/",

index: 1

});

}

//图片点击处理

function showActionSheet() {

// alert(outPutPath);

var bts = [{

title: "本地相册",

style: "destructive"

}, {

title: "拍照"

}]; //暂时不支持{title:"拍照"}

plus.nativeUI.actionSheet({

cancel: "取消",

buttons: bts

},

function(e) {

if (e.index == 1) {

//1 本地相册,包括裁剪

galleryImg();

} else if (e.index == 2) {

//2 拍照

getImage();

} else {

//3 取消

}

}

);

}

android相册拍照剪切上传封装,安卓,图片裁剪上传真机测试好使,打包后显示:无法保存裁剪的图像...相关推荐

  1. html5 图片上传,支持图片预览、压缩、及进度显示,兼容IE6+及标准浏览器

    原文:html5 图片上传,支持图片预览.压缩.及进度显示,兼容IE6+及标准浏览器 以前写过上传组件,见 打造 html5 文件上传组件,实现进度显示及拖拽上传,兼容IE6+及其它标准浏览器,对付一 ...

  2. Android 图片 批量上传,移动端图片批量上传问题

    一.操作系统 1.ios ios的操作系统: 实现图片批量上传,可以直接使用input  type=file 加上multiple 就可以实现,至于有些图片显示有问题可以通过 new FileRead ...

  3. linux禁止客户端上传文件_图片/文件上传如此简单|macOS 图床客户端 uPic

    前言 相信很多人在写作(特别是需要多平台发布)的时候都会因为插图而增加工作量: 平台图片外链不允许在网站外部访问. 使用云图床服务上传流程复杂. 那么这些问题有没有办法解决呢,答案肯定是"有 ...

  4. java实现图片上传_java实现图片的上传和展示

    一.注意事项: 1,该项目主要采用的是springboot+thymeleaf框架 2,代码展示的为ajax完成图片上传(如果不用ajax只需要改变相应的form表单配置即可) 二.效果实现: 1,页 ...

  5. android 正在上传动画,安卓系统上传文件动态显示进度条,进度条经常卡在99%有时也会卡住不显示完整的文字。...

    使用var task = plus.uploader.createUpload上传文件时,添加上传状态监听事件 task.addEventListener("statechanged&quo ...

  6. android多文件上传错误,微信多图上传解决android多图上传失败问题

    微信提供了文件上传的方法wx.uploadFile来上传我们的图片 wx.chooseImage({ success: function(res) { var tempFilePaths = res. ...

  7. 基于webuploader.js的单图片上传封装

    HTML代码 <div class="manageImgUp">点击图片上传</div> <div class="manageImgUpLc ...

  8. php封装图片上传,PHP文件上传封装

    文件上传封装 include 'uploadone.php'; header("Content-type: text/html; charset=utf-8"); //封装获取文件 ...

  9. android+nutz后台如何上传和下载图片

    android+nutz后台如何上传和下载图片 发布于 588天前  作者 yummy222  428 次浏览  复制  上一个帖子  下一个帖子  标签: 无 最近在做一个基于android的app ...

最新文章

  1. Linux fs清理文件,linux找出已经删除但磁盘空间未释放的大文件并清空
  2. 人本质要好,要善良,要真诚,有格局和胸怀,有能力,有眼光,能讲故事,能找到人,能搞到钱...
  3. can t connect to mysql server on ‘localhost‘解决方法
  4. element表格取消全选_ElementUi 表格取消全选框,用文字表示
  5. 【深度学习的数学】超平面是什么?(自由度比空间维度小1)
  6. java 对象访问权限_Java面向对象编程之访问控制权限
  7. flex白板之图形绘制函数
  8. DateFormat PHP Class (php 处理日期)
  9. java cache组件_组件之Cache篇
  10. Linux 命令(123)—— iostat 命令
  11. 力扣——字符串转换整数 (atoi)
  12. linux设备驱动程序之时钟管理
  13. 学习iOS从object-c开始-语法(一)
  14. 星期一到星期日的英文_缩写_读音_巧记方法
  15. qPCR检测基因表达的引物数据库
  16. 架构师更多的是和人打交道,说说我见到和听说到的架构师升级步骤和平时的工作内容
  17. [ 物联网篇 ] 27 -使用libcur API 实现本地时间同步的功能,类似NTP功能
  18. 马来西亚吉隆坡召开的2010OpenWebAsia大会
  19. Java pcm文件与wav文件互转
  20. 《趣味知识博文》小W与小L带你聊天式备考CDA Level Ⅰ(四)

热门文章

  1. 异常详细信息: System.Runtime.InteropServices.COMException: 无效的类别字符串
  2. 学javascript 必须了解 typeof 和 instanceof
  3. 「Luogu1552」[APIO2012]派遣
  4. 现代人,特别需要蒸之一
  5. HashMap以及ConcurrentHashMap(volatile)
  6. springmvc中的全注解模式
  7. 图论相关算法理解和总结
  8. Spring Cron Expression
  9. 桌面电话的进化到统一通信
  10. 黑客秘籍:7个有趣的信息安全项目