Ionic 4 | Use Camera using Ionic Native plugin in Ionic 4 Latest version

Ionic 4 Application to use Camera and get pictures returning images as Base64 URL to show user Image taken.

Hybrid applications are very quick to build but sometimes it becomes challenging to achieve some features which involve access to hardware like GPS, Network, Storage, File Storage, Camera. Cordova comes in charge to provide plugins to make a connection with java libraries to use them.

We have already discussed How to access the camera in Ionic’s version 3, in this article we will use Camera feature in Ionic application with latest version 4 using Cordova and Ionic Native

Let’s start…

Create a new Ionic 4 Application

We will create an application using the latest version of Ionic CLI v5.0.3

Make sure you have installed the latest version by running following npm command

After updating the Ionic CLI run following command to create a new Ionic 4 application with a blank template.

Install Cordova and Native Camera Plugin

Next, run following Cordova and Ionic Native commands to install camera plugin to access camera features.

 

For IOS: Add following configuration in config.xml inside of the <platform name='ios>  section as IOS 10 asks for camera permission.

 

Import Camera Plugin in App Module

To use camera plugin in the application we will import it then add in the providers array.

Navigate to app.module.ts file then replace below code in it.

we are done with configuration.

Use the Camera in Home Component

In the blank template we already have home component, add a button in home.page.html file to open the camera by calling takeSnap() method in (click) event handler

<img> tag will show the Image clicked using the camera.

Now open the home.page.ts file, then replace the following code in it.

Here we have imported for Camera & CameraOptions to control features.

Add Camera in the class constructor

CameraOptions have parameters which are very important to control how images are handles clicked using the camera.

quality: can be from 1-100, due larger image size app becomes unstable so 20 is ok for reasonable image quality

destinationType: it can be FILE_URI (.jpg file path) or DATA_URI (base64)
encodingType: Image file type is returned in JPEG or PNG
mediaType: Used to get ALLMEDIA(Pictures or Videos), PICTURE or VIDEO

 

takeSnap() method calls getPicture which returns promise to get data url or base64 url based on the option provided in destinationType.

Conclusion: Cordova plugin with ionic Native wrapper makes it very handy to use camera feature in an Ionic application. It solves the basic function when the quality parameter is small otherwise it can do app crashes due to limited device memory of webviews which we use in hybrid apps. But its better than nothing 🙂

 

Leave a Reply

Your email address will not be published. Required fields are marked *