export-base64-image-to-gallery
A Capacitor plugin to export base64 encoded images to device gallery.
Install
npm install export-base64-image-to-gallery
npx cap sync
API
<docgen-index></docgen-index>
<docgen-api>
checkPermissions()
checkPermissions() => Promise<GalleryPermissionStatus>
Returns: Promise<GalleryPermissionStatus>
requestPermissions()
requestPermissions() => Promise<GalleryPermissionStatus>
Returns: Promise<GalleryPermissionStatus>
exportImageToGallery(...)
exportImageToGallery(options: { data: string; }) => Promise<GalleryExportResponse>
Param | Type |
---|---|
options |
{ data: string; } |
Returns: Promise<GalleryExportResponse>
Interfaces
GalleryPermissionStatus
Prop | Type |
---|---|
gallery |
PermissionState |
GalleryExportResponse
Prop | Type |
---|---|
success |
boolean |
error |
string |
Type Aliases
PermissionState
'prompt' | 'prompt-with-rationale' | 'granted' | 'denied'
</docgen-api>
iOS
Add Photo Libarary usage descriptions in the Info.plist file under dict tag, or with Xcode.
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Access to photo library to save photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Access to photo library to save photos</string>
Android
Add permissions for External Storage in your app's AndroidManifest.xml file.
<!-- Permissions -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Example
This example is using TypeScript, but you can use this plugin in any Capacitor project.
Import the plugin and response types.
import { ExportBase64ImageToGallery, GalleryExportResponse, GalleryPermissionStatus } from 'export-base64-image-to-gallery';
Implementation. This is a full code example that covers all the plugin methods. Consider deviding this into two or more methods in a real implementation. ```typescript const base64Image: string = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAA........."; let exportStatus: GalleryExportResponse;
const currentPermissionStatus: GalleryPermissionStatus = await ExportBase64ImageToGallery.checkPermissions(); if (currentPermissionStatus.gallery === 'prompt' || currentPermissionStatus.gallery === 'prompt-with-rationale') { // Consider providing an explanation to the user for 'prompt-with-rationale' case. const requestedPermissionStatus: GalleryPermissionStatus = await ExportBase64ImageToGallery.requestPermissions(); if (requestedPermissionStatus.gallery === 'granted') { exportStatus = await ExportBase64ImageToGallery.exportImageToGallery({data: base64Image}); } else { // Show a message to the user indicating the app can't export image without permission. // If they want to use the feature they have to allow permission in device settings. console.log('Gallery Export permission denied at prompt:', requestedPermissionStatus); } } else if (currentPermissionStatus.gallery === 'denied') { // Show a message to the user explaining they have denied access before. // Enalbe it in settings if they want to use the feature. console.log('Gallery Export permission denied already:', currentPermissionStatus); } else if (currentPermissionStatus.gallery === 'granted') { exportStatus = await ExportBase64ImageToGallery.exportImageToGallery({data: base64Image}); }
if (exportStatus.success === true) { // Export successful - Show a success message console.log('Export success:', exportStatus); } else { // Export failed - console.log('Export failed with error:', exportStatus.error); } ```