@capacitor-community/camera-preview 3.1.0 → 3.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/android/build.gradle +14 -7
- package/dist/esm/definitions.d.ts +10 -8
- package/dist/esm/web.d.ts +1 -1
- package/dist/esm/web.js +15 -5
- package/dist/esm/web.js.map +1 -1
- package/ios/Plugin/CameraController.swift +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,6 +59,15 @@ You will need to add two permissions to `Info.plist`. Follow the [Capacitor docs
|
|
|
59
59
|
## Extra Web installation steps
|
|
60
60
|
Add `import '@capacitor-community/camera-preview'` to you entry script in ionic on `app.module.ts`, so capacitor can register the web platform from the plugin
|
|
61
61
|
|
|
62
|
+
then in html add
|
|
63
|
+
|
|
64
|
+
<div id="cameraPreview"></div>
|
|
65
|
+
|
|
66
|
+
and
|
|
67
|
+
ngOnInit() { const { CameraPreview } = Plugins; CameraPreview.start({ parent: "cameraPreview"}); }
|
|
68
|
+
|
|
69
|
+
it will work
|
|
70
|
+
|
|
62
71
|
|
|
63
72
|
# Methods
|
|
64
73
|
|
package/android/build.gradle
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
ext {
|
|
2
|
+
junitVersion = project.hasProperty('junitVersion') ? rootProject.ext.junitVersion : '4.13.1'
|
|
3
|
+
androidxAppCompatVersion = project.hasProperty('androidxAppCompatVersion') ? rootProject.ext.androidxAppCompatVersion : '1.2.0'
|
|
4
|
+
androidxJunitVersion = project.hasProperty('androidxJunitVersion') ? rootProject.ext.androidxJunitVersion : '1.1.2'
|
|
5
|
+
androidxEspressoCoreVersion = project.hasProperty('androidxEspressoCoreVersion') ? rootProject.ext.androidxEspressoCoreVersion : '3.3.0'
|
|
6
|
+
}
|
|
7
|
+
|
|
1
8
|
buildscript {
|
|
2
9
|
repositories {
|
|
3
10
|
mavenCentral()
|
|
@@ -11,10 +18,10 @@ buildscript {
|
|
|
11
18
|
apply plugin: 'com.android.library'
|
|
12
19
|
|
|
13
20
|
android {
|
|
14
|
-
compileSdkVersion 30
|
|
21
|
+
compileSdkVersion project.hasProperty('compileSdkVersion') ? rootProject.ext.compileSdkVersion : 30
|
|
15
22
|
defaultConfig {
|
|
16
|
-
minSdkVersion 21
|
|
17
|
-
targetSdkVersion 30
|
|
23
|
+
minSdkVersion project.hasProperty('minSdkVersion') ? rootProject.ext.minSdkVersion : 21
|
|
24
|
+
targetSdkVersion project.hasProperty('targetSdkVersion') ? rootProject.ext.targetSdkVersion : 30
|
|
18
25
|
versionCode 1
|
|
19
26
|
versionName "1.0"
|
|
20
27
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
|
@@ -39,10 +46,10 @@ repositories {
|
|
|
39
46
|
dependencies {
|
|
40
47
|
implementation fileTree(dir: 'libs', include: ['*.jar'])
|
|
41
48
|
implementation project(':capacitor-android')
|
|
42
|
-
implementation
|
|
49
|
+
implementation "androidx.appcompat:appcompat:$androidxAppCompatVersion"
|
|
43
50
|
implementation 'androidx.exifinterface:exifinterface:1.3.2'
|
|
44
|
-
testImplementation
|
|
45
|
-
androidTestImplementation
|
|
46
|
-
androidTestImplementation
|
|
51
|
+
testImplementation "junit:junit:$junitVersion"
|
|
52
|
+
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
53
|
+
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
|
|
47
54
|
}
|
|
48
55
|
|
|
@@ -4,9 +4,9 @@ export interface CameraPreviewOptions {
|
|
|
4
4
|
parent?: string;
|
|
5
5
|
/** Class name to add to the video preview element (applicable to the web platform only) */
|
|
6
6
|
className?: string;
|
|
7
|
-
/** The preview width in pixels, default window.screen.width
|
|
7
|
+
/** The preview width in pixels, default window.screen.width */
|
|
8
8
|
width?: number;
|
|
9
|
-
/** The preview height in pixels, default window.screen.height
|
|
9
|
+
/** The preview height in pixels, default window.screen.height */
|
|
10
10
|
height?: number;
|
|
11
11
|
/** The x origin, default 0 (applicable to the android and ios platforms only) */
|
|
12
12
|
x?: number;
|
|
@@ -20,7 +20,7 @@ export interface CameraPreviewOptions {
|
|
|
20
20
|
rotateWhenOrientationChanged?: boolean;
|
|
21
21
|
/** Choose the camera to use 'front' or 'rear', default 'front' */
|
|
22
22
|
position?: CameraPosition | string;
|
|
23
|
-
/** Defaults to false - Capture images to a file and return
|
|
23
|
+
/** Defaults to false - Capture images to a file and return the file path instead of returning base64 encoded data */
|
|
24
24
|
storeToFile?: boolean;
|
|
25
25
|
/** Defaults to false - Android Only - Disable automatic rotation of the image, and let the browser deal with it (keep reading on how to achieve it) */
|
|
26
26
|
disableExifHeaderStripping?: boolean;
|
|
@@ -30,9 +30,9 @@ export interface CameraPreviewOptions {
|
|
|
30
30
|
disableAudio?: boolean;
|
|
31
31
|
/** Android Only - Locks device orientation when camera is showing. */
|
|
32
32
|
lockAndroidOrientation?: boolean;
|
|
33
|
-
/** Defaults to false - Android and Web only. Set if
|
|
33
|
+
/** Defaults to false - Android and Web only. Set if camera preview can change opacity. */
|
|
34
34
|
enableOpacity?: boolean;
|
|
35
|
-
/** Defaults to false - Android only. Set if
|
|
35
|
+
/** Defaults to false - Android only. Set if camera preview will support pinch to zoom. */
|
|
36
36
|
enableZoom?: boolean;
|
|
37
37
|
}
|
|
38
38
|
export interface CameraPreviewPictureOptions {
|
|
@@ -40,7 +40,9 @@ export interface CameraPreviewPictureOptions {
|
|
|
40
40
|
height?: number;
|
|
41
41
|
/** The picture width, optional, default 0 (Device default) */
|
|
42
42
|
width?: number;
|
|
43
|
-
/** The picture quality, 0 - 100, default 85
|
|
43
|
+
/** The picture quality, 0 - 100, default 85 on `iOS/Android`.
|
|
44
|
+
*
|
|
45
|
+
* If left undefined, the `web` implementation will export a PNG, otherwise a JPEG will be generated */
|
|
44
46
|
quality?: number;
|
|
45
47
|
}
|
|
46
48
|
export interface CameraSampleOptions {
|
|
@@ -66,7 +68,7 @@ export interface CameraPreviewPlugin {
|
|
|
66
68
|
}>;
|
|
67
69
|
setFlashMode(options: {
|
|
68
70
|
flashMode: CameraPreviewFlashMode | string;
|
|
69
|
-
}): void
|
|
70
|
-
flip(): void
|
|
71
|
+
}): Promise<void>;
|
|
72
|
+
flip(): Promise<void>;
|
|
71
73
|
setOpacity(options: CameraOpacityOptions): Promise<{}>;
|
|
72
74
|
}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export declare class CameraPreviewWeb extends WebPlugin implements CameraPreview
|
|
|
9
9
|
constructor();
|
|
10
10
|
start(options: CameraPreviewOptions): Promise<{}>;
|
|
11
11
|
stop(): Promise<any>;
|
|
12
|
-
capture(
|
|
12
|
+
capture(options: CameraPreviewPictureOptions): Promise<any>;
|
|
13
13
|
captureSample(_options: CameraSampleOptions): Promise<any>;
|
|
14
14
|
getSupportedFlashModes(): Promise<{
|
|
15
15
|
result: CameraPreviewFlashMode[];
|
package/dist/esm/web.js
CHANGED
|
@@ -11,7 +11,7 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
11
11
|
await navigator.mediaDevices
|
|
12
12
|
.getUserMedia({
|
|
13
13
|
audio: !options.disableAudio,
|
|
14
|
-
video: true
|
|
14
|
+
video: true
|
|
15
15
|
})
|
|
16
16
|
.then((stream) => {
|
|
17
17
|
// Stop any existing stream so we can request media with different constraints based on user input
|
|
@@ -43,10 +43,13 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
43
43
|
parent.appendChild(videoElement);
|
|
44
44
|
if (navigator.mediaDevices && navigator.mediaDevices.getUserMedia) {
|
|
45
45
|
const constraints = {
|
|
46
|
-
video:
|
|
46
|
+
video: {
|
|
47
|
+
width: { ideal: options.width },
|
|
48
|
+
height: { ideal: options.height }
|
|
49
|
+
}
|
|
47
50
|
};
|
|
48
51
|
if (options.position === 'rear') {
|
|
49
|
-
constraints.video =
|
|
52
|
+
constraints.video.facingMode = 'environment';
|
|
50
53
|
this.isBackCamera = true;
|
|
51
54
|
}
|
|
52
55
|
else {
|
|
@@ -80,7 +83,7 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
80
83
|
video.remove();
|
|
81
84
|
}
|
|
82
85
|
}
|
|
83
|
-
async capture(
|
|
86
|
+
async capture(options) {
|
|
84
87
|
return new Promise((resolve, _) => {
|
|
85
88
|
const video = document.getElementById('video');
|
|
86
89
|
const canvas = document.createElement('canvas');
|
|
@@ -94,8 +97,15 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
94
97
|
context.scale(-1, 1);
|
|
95
98
|
}
|
|
96
99
|
context.drawImage(video, 0, 0, video.videoWidth, video.videoHeight);
|
|
100
|
+
let base64EncodedImage;
|
|
101
|
+
if (options.quality != undefined) {
|
|
102
|
+
base64EncodedImage = canvas.toDataURL('image/jpeg', options.quality / 100.0).replace('data:image/jpeg;base64,', '');
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
base64EncodedImage = canvas.toDataURL('image/png').replace('data:image/png;base64,', '');
|
|
106
|
+
}
|
|
97
107
|
resolve({
|
|
98
|
-
value:
|
|
108
|
+
value: base64EncodedImage,
|
|
99
109
|
});
|
|
100
110
|
});
|
|
101
111
|
}
|
package/dist/esm/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAU5C,MAAM,OAAO,gBAAiB,SAAQ,SAAS;IAO7C;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,eAAe;YACrB,SAAS,EAAE,CAAC,KAAK,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,OAA6B;QACvC,OAAO,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,SAAS,CAAC,YAAY;iBACzB,YAAY,CAAC;gBACZ,KAAK,EAAE,CAAC,OAAO,CAAC,YAAY;gBAC5B,KAAK,EAAE,IAAI;aACZ,CAAC;iBACD,IAAI,CAAC,CAAC,MAAmB,EAAE,EAAE;gBAC5B,kGAAkG;gBAClG,MAAM,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YAEL,MAAM,KAAK,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAEvD,IAAI,CAAC,KAAK,EAAE;gBACV,MAAM,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;gBACrD,YAAY,CAAC,EAAE,GAAG,OAAO,CAAC;gBAC1B,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;gBAE5D,iDAAiD;gBACjD,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,EAAE;oBAC/B,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,uDAAuD,CAAC,CAAC;iBAC7F;gBAED,MAAM,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;gBACpD,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAE/E,mHAAmH;gBACnH,4EAA4E;gBAC5E,uFAAuF;gBACvF,IAAI,QAAQ,EAAE;oBACZ,YAAY,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;oBAC9C,YAAY,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;oBAC3C,YAAY,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;iBAClD;gBAED,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAEjC,IAAI,SAAS,CAAC,YAAY,IAAI,SAAS,CAAC,YAAY,CAAC,YAAY,EAAE;oBACjE,MAAM,WAAW,GAA2B;wBAC1C,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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"}
|
|
@@ -205,6 +205,7 @@ extension CameraController {
|
|
|
205
205
|
|
|
206
206
|
previewLayer?.connection?.videoOrientation = videoOrientation
|
|
207
207
|
dataOutput?.connections.forEach { $0.videoOrientation = videoOrientation }
|
|
208
|
+
photoOutput?.connections.forEach { $0.videoOrientation = videoOrientation }
|
|
208
209
|
}
|
|
209
210
|
|
|
210
211
|
func switchCameras() throws {
|