@paradoxepoch/capacitor-photoviewer
v4.1.1
Published
PhotoViewer table images with fullscreen and sharing capabilities
Downloads
187
Maintainers
Readme
Maintainers
| Maintainer | GitHub | Social | | ---------- | ----------------------------------------- | --------------------------------------------- | | Robin Genz | robingenz | @robin_genz | | Tristan Gauci | ParadoxEpoch | @ParadoxEpoch |
Browser Support
The plugin follows the guidelines from the Capacitor Team
,
meaning that it will not work in IE11 without additional JavaScript transformations, e.g. with Babel.
Installation
npm install @capacitor-community/photoviewer
npx cap sync
Since version 3.0.4, modify the capacitor.config.ts
to add the image location to save the image downloaded from an HTTP request to the internal disk.
const config: CapacitorConfig = {
...
plugins: {
PhotoViewer: {
iosImageLocation: 'Library/Images',
androidImageLocation: 'Files/Images',
}
}
...
};
export default config;
iOS
- in Xcode, open
Info.plist
and add a new Information Property likePrivacy - Photo Library Usage Description
and set a value toWe need to write photos
. This is required to have theShare
of images and thecreate Movie
working.
Android
- on the
res
project folder open thefile_paths.xml
file and add
<files-path name="files" path="."/>
- open the
build.gradle (Project:android)
and make sure thatkotlin
is declared
...
buildscript {
ext.kotlin_version = '1.8.20'
dependencies {
...
classpath 'com.android.tools.build:gradle:8.0.0'
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
...
open the
build.gradle (Module: android.app)
and do the followingafter
apply plugin: 'com.android.application'
add``` apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' ```
in the
android
block add``` buildFeatures { dataBinding = true } ```
in the
repositories
block add``` maven { url 'https://jitpack.io' } ```
in the
dependencies
block add``` implementation "androidx.core:core-ktx:1.10.0" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" ```
Now run
Sync Project with Gradle Files
and you are ready.
Web, PWA
The plugin works with the companion Stencil component jeep-photoviewer
.
It is mandatory to install it
npm install --save-dev jeep-photoviewer@latest
Build your App
When your app is ready
npm run build
npx cap copy
npx cap copy web
npx cap open android // Android
npx cap open ios // iOS
npm run serve // Web
Supported methods
| Name | Android | iOS | Electron | Web | | :-------------------------- | :------ | :--- | :------- | :--- | | echo | ✅ | ✅ | ❌ | ✅ | | show | ✅ | ✅ | ❌ | ✅ | | saveImageFromHttpToInternal | ❌ | ✅ | ❌ | ❌ | | getInternalImagePaths | ❌ | ✅ | ❌ | ❌ |
Documentation
Applications demonstrating the use of the plugin
Ionic/Angular
Ionic/Vue
React
Usage
iOS and Android
- In
Gallery
mode (Image Array with more than one Image):- make a
tap
will select the image and go fullscreen - In Fulscreen
tap
will hide the share and exit buttons and open the window for other gestures.double tap
to zoom in and outpinch
with your two fingerstap
will show the share and exit buttons and leave the window for other gestures.double tap
will hide the buttons and zoom in straightforward (iOS only)
- make a
- In
One Image
mode (Image Array with one Image only):pinch-zoom
andpan
with your two fingersdouble-tap
to zoom directly to the maximum zoom
- You can pass customHeaders in the options object to let the plugin pass those headers to the http request for the image. For example:
PhotoViewer.show({
images: [
{
url: 'https://picsum.photos/id/237/200/300',
title: 'Title'
},
{
url: 'https://picsum.photos/id/238/200/300',
title: 'Title'
},
],
options: {
customHeaders: {
accept: 'image/jpeg, image/png, image/gif, image/webp, image/svg+xml, image/*;q=0.8, */*;q=0.5',
cookie: 'session=foo;',
},
},
mode: 'slider'
})
Dependencies
The Android code is using MikeOrtiz/TouchImageView
allowing for the zooming in picture (https://github.com/MikeOrtiz/TouchImageView)
The iOS code is using SDWebImage
for http async image downloader (https://github.com/SDWebImage/SDWebImage) and ISVImageScrollView
for the pinch-zoom and pan in picture (https://github.com/yuriiik/ISVImageScrollView)
Contributors ✨
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!