使用Ionic 2和Ionic Native访问手机相机

在开发移动应用时,访问手机的相机功能是一个常见的需求。Ionic 2框架提供了一种简单的方式来实现这一功能。本文将介绍如何使用Ionic 2和Ionic Native库来访问和使用手机相机。

开始之前

首先,需要创建一个新的Ionic 2应用。使用空白模板来生成应用:

ionic start sayCheese blank --v2 --id com.techiediaries.sayCheese

确保添加了--v2参数,这样Ionic CLI就会基于Ionic 2而不是Ionic 1来生成应用。

进入应用项目目录,并启动应用:

cd sayCheese ionic serve

如果一切顺利,应该能在默认浏览器中看到空白应用。

添加平台和插件

由于浏览器不支持Cordova插件,需要将手机通过USB连接到电脑上,并执行以下命令:

ionic run android

如果使用的是Mac,也可以选择为iOS开发应用,而不是Android:

ionic run ios

接下来,需要添加目标平台:

ionic platform add android

如果是第一次使用Cordova,请确保已经通过npm安装了它:

npm install -g cordova

添加了平台之后,需要添加相机插件:

ionic plugin add cordova-plugin-camera

编写代码

现在,让开始编写代码来访问相机并拍照。打开位于app/src/pages/home目录下的home.ts文件,并编写以下代码来使用Ionic Native访问相机:

import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { Camera } from '@ionic-native/camera'; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { public myImage: string; constructor(public navCtrl: NavController, public ngZone: NgZone) { this.myImage = 'https://placehold.it/150x150'; } public takePic() { Camera.getPicture({ quality: 75, destinationType: Camera.DestinationType.DATA_URL, sourceType: Camera.PictureSourceType.CAMERA, allowEdit: false, encodingType: Camera.EncodingType.JPEG, targetWidth: 300, targetHeight: 300, saveToPhotoAlbum: true }).then((imageData) => { this.myImage = 'data:image/jpeg;base64,' + imageData; }, (err) => { alert(err); }); } }

首先,从@ionic-native/camera导入了Camera类。然后,声明了一个名为myImage的字符串属性,它将保存图片的URL。在构造函数中,使用placehold.it初始化myImage

接下来,添加了一个名为takePic的公共方法,它包含了使用Camera.getPicture拍照的逻辑。这个方法接受一个选项对象,定义了要拍摄的图片的属性和其他相机设置。最重要的是,告诉相机以base64格式返回图像数据,使用destinationType: Camera.DestinationType.DATA_URL

这个方法返回一个承诺,如果操作成功,将图像数据(base64)分配给myImage,否则只显示错误。

运行应用

现在,只需在终端中输入以下命令:

ionic run android
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485