cordova-plugin-camera及cordova-plugin-crop调用例程
来源:互联网 发布:jvcs500知乎 编辑:程序博客网 时间:2024/05/20 16:09
为了了解Cordova插件的使用和原理,练习了这两个插件的使用,以便创建vr场景编辑插件上手,记录下过程。
同时本例子中还有取设备信息及取软件版本号的插件。
1.加入插件
cordova plugin add cordova-plugin-cropcordova plugin add cordova-plugin-camera
2.修正下cordova-plugin-crop中的错误
- (void) cropImage: (CDVInvokedUrlCommand *) command { UIImage *image; NSString *imagePath = [command.arguments objectAtIndex:0]; NSDictionary *options = [command.arguments objectAtIndex:1]; self.quality = options[@"quality"] ? [options[@"quality"] intValue] : 100; NSString *filePrefix = @"file://"; if ([imagePath hasPrefix:filePrefix]) { imagePath = [imagePath substringFromIndex:[filePrefix length]]; } NSBundle *bd; //增加部分 bd =[NSBundle mainBundle]; //增加部分 NSString *str; //增加部分 str = [bd bundlePath]; //增加部分 imagePath = [str stringByAppendingPathComponent:imagePath]; //增加部分 if (!(image = [UIImage imageWithContentsOfFile:imagePath])) { NSDictionary *err = @{ @"message": @"Image doesn't exist", @"code": @"ENOENT" }; CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsDictionary:err]; [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; return; } PECropViewController *cropController = [[PECropViewController alloc] init]; cropController.delegate = self; cropController.image = image; CGFloat width = image.size.width; CGFloat height = image.size.height; CGFloat length = MIN(width, height); cropController.toolbarHidden = YES; cropController.rotationEnabled = NO; cropController.keepingCropAspectRatio = YES; cropController.imageCropRect = CGRectMake((width - length) / 2, (height - length) / 2, length, length); self.callbackId = command.callbackId; UINavigationController *navigationControlle强调内容r = [[UINavigationController alloc] initWithRootViewController:cropController]; if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { navigationController.modalPresentationStyle = UIModalPresentationFormSheet; } [self.viewController presentViewController:navigationController animated:YES completion:NULL];}
3.编写html及js文件
<!DOCTYPE html><html> <meta charset="UTF-8"> <head> <title>Device Ready Example</title> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8"> var pictureSource; var destinationType; function onLoad() { document.addEventListener("deviceready", onDeviceReady, false); } function buttonClick(){ } function successFunction(){ alert("successFunction"); } function failFunction(){ alert("failFunction"); } function onDeviceReady() { pictureSource=navigator.camera.PictureSourceType; destinationType=navigator.camera.DestinationType; console.log("onDeviceReady"); console.log(device); console.log(device.cordova); //获取当前cordova的版本,‘’ console.log(device.model); //device.model返回设备的模型或产品名称。该值由设备制造商设置,并且可能在同一产品的不同版本中不同。 console.log(device.uuid); //获取设备通用唯一标识uuid,例如:‘78ca1fe2c1d3b584’ console.log(device.platform); //获取操作系统名称,例如:‘Android’ console.log(device.version); //获取操作系统版本,例如:‘4.4.4’ console.log(device.isVirtual); //判断设备是否在虚拟机上运行,在‘VS Emulator’返回false,所以这个不一定确实 console.log(device.serial); //获取设备序列号,例如:‘unknown’ console.log(device.manufacturer);//获取设备制造商,例如:‘VS Emulator’ cordova.getAppVersion.getVersionNumber().then(function(version){ alert(version); }); navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); } function cropClick(){ plugins.crop(function success (filepath) { console.log(filepath); var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = filepath; }, function fail () { console.log("fail"); }, 'file://www/img/thumb.jpg', {quality: 30}) } function onPhotoDataSuccess(imageData) { console.log(imageData); var smallImage = document.getElementById('smallImage'); smallImage.style.display = 'block'; smallImage.src = "data:image/jpeg;base64," + imageData; } function onPhotoURISuccess(imageURI) { console.log(imageURI); var largeImage = document.getElementById('largeImage'); largeImage.style.display = 'block'; largeImage.src = imageURI; } function capturePhoto() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 50, destinationType: destinationType.DATA_URL }); } function capturePhotoEdit() { navigator.camera.getPicture(onPhotoDataSuccess, onFail, { quality: 20, allowEdit: true, destinationType: destinationType.DATA_URL }); } function getPhoto(source) { navigator.camera.getPicture(onPhotoURISuccess, onFail, { quality: 50, destinationType: destinationType.FILE_URI, sourceType: source }); } function onFail(message) { alert('Failed because: ' + message); } </script> </head> <body onload="onLoad()"> <p>ExampleObject</p> <button onclick="buttonClick()">自定义插件</button> <button onclick="cropClick()">裁图</button> <button onclick="capturePhoto();">Capture Photo</button> <br> <button onclick="capturePhotoEdit();">Capture Editable Photo</button> <br> <button onclick="getPhoto(pictureSource.PHOTOLIBRARY);">From Photo Library</button><br> <button onclick="getPhoto(pictureSource.SAVEDPHOTOALBUM);">From Photo Album</button><br> <img style="display:none;width:60px;height:60px;" id="smallImage" src="" /> <img style="display:none;" id="largeImage" src="" /> <img id="cropimg" src="./img/logo.png" /> </body></html>
4.一个完整的摄像头取图或是缩略图或是截图,就实现了,很简单吧,基本上不用写什么本地的代码,大部分框架实现了,主要专注于html和js就可以了。
阅读全文
0 0
- cordova-plugin-camera及cordova-plugin-crop调用例程
- Cordova plugin
- cordova plugin
- Cordova plugin 调用本地 notification
- Cordova使用插件cordova-plugin-media-capture调用摄像头
- cordova-plugin-console插件及Cordova Web页面调试整理
- Cordova 9 Toast plugin
- cordova plugin开发
- cordova plugin实践
- Cordova Plugin Upload
- cordova-plugin-file 实例
- cordova-plugin-file 应用
- ionic cordova plugin 错误
- cordova wifi插件(cordova plugin add cordova-plugin-hotspot)
- 华为机型 cordova-plugin-camera从图库获取报错
- Using cordova-camera plugin in your Ionic 2 Apps
- ionic添加调取摄像头插件--cordova-plugin-camera
- cordova插件-motorola-datawedge-cordova-plugin
- codeforces 675D (STL set)
- 子网掩码计算
- 找到两个链表的第一个公共节点 37--剑指offer
- 【Owin 学习系列】1. 第一个 Owin 程序
- 树莓派2 配置
- cordova-plugin-camera及cordova-plugin-crop调用例程
- 代码重构小结
- springboot JPA Connection is read-only. Queries leading to data modification are not allowed
- pc端 移动端 分享
- 线程学习笔记(九)-死锁
- Debug模式的升级和扩展
- Hibernate获得session的方式
- 关于如何扛量的一点学习
- Linux下安装jdk