capacitor-plugin-camera-forked 3.0.88 → 3.0.91
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 +7 -3
- package/android/src/main/java/com/tonyxlh/capacitor/camera/CameraPreviewPlugin.java +32 -4
- package/dist/docs.json +8 -2
- package/dist/esm/definitions.d.ts +3 -1
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.d.ts +4 -1
- package/dist/esm/web.js +11 -5
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +11 -5
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +11 -5
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/CameraPreviewPlugin.swift +88 -26
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ document.documentElement.style.setProperty('--ion-background-color', 'transparen
|
|
|
91
91
|
|
|
92
92
|
<docgen-index>
|
|
93
93
|
|
|
94
|
-
* [`initialize()`](#initialize)
|
|
94
|
+
* [`initialize(...)`](#initialize)
|
|
95
95
|
* [`getResolution()`](#getresolution)
|
|
96
96
|
* [`setResolution(...)`](#setresolution)
|
|
97
97
|
* [`getAllCameras()`](#getallcameras)
|
|
@@ -127,12 +127,16 @@ document.documentElement.style.setProperty('--ion-background-color', 'transparen
|
|
|
127
127
|
<docgen-api>
|
|
128
128
|
<!--Update the source file JSDoc comments and rerun docgen to update the docs below-->
|
|
129
129
|
|
|
130
|
-
### initialize()
|
|
130
|
+
### initialize(...)
|
|
131
131
|
|
|
132
132
|
```typescript
|
|
133
|
-
initialize() => Promise<void>
|
|
133
|
+
initialize(options?: { quality?: number | undefined; } | undefined) => Promise<void>
|
|
134
134
|
```
|
|
135
135
|
|
|
136
|
+
| Param | Type |
|
|
137
|
+
| ------------- | ---------------------------------- |
|
|
138
|
+
| **`options`** | <code>{ quality?: number; }</code> |
|
|
139
|
+
|
|
136
140
|
--------------------
|
|
137
141
|
|
|
138
142
|
|
|
@@ -110,11 +110,22 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
110
110
|
|
|
111
111
|
static public Bitmap frameTaken;
|
|
112
112
|
|
|
113
|
+
// Store the desired JPEG quality, set during initialization
|
|
114
|
+
private int desiredJpegQuality = 95; // Default to high quality
|
|
115
|
+
|
|
113
116
|
@PluginMethod
|
|
114
117
|
public void initialize(PluginCall call) {
|
|
115
118
|
getActivity().runOnUiThread(new Runnable() {
|
|
116
119
|
@RequiresApi(api = Build.VERSION_CODES.P)
|
|
117
120
|
public void run() {
|
|
121
|
+
// Get quality parameter from initialization, default to 95 if not specified
|
|
122
|
+
if (call.hasOption("quality")) {
|
|
123
|
+
desiredJpegQuality = call.getInt("quality");
|
|
124
|
+
// Ensure quality is within valid range
|
|
125
|
+
desiredJpegQuality = Math.max(1, Math.min(100, desiredJpegQuality));
|
|
126
|
+
Log.d("Camera", "Initialized with JPEG quality: " + desiredJpegQuality);
|
|
127
|
+
}
|
|
128
|
+
|
|
118
129
|
previewView = new PreviewView(getContext());
|
|
119
130
|
previewView.setScaleType(PreviewView.ScaleType.FIT_CENTER);
|
|
120
131
|
FrameLayout.LayoutParams cameraPreviewParams = new FrameLayout.LayoutParams(
|
|
@@ -131,9 +142,9 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
131
142
|
cameraProvider = cameraProviderFuture.get();
|
|
132
143
|
cameraSelector = new CameraSelector.Builder()
|
|
133
144
|
.requireLensFacing(CameraSelector.LENS_FACING_BACK).build();
|
|
134
|
-
// Auto-optimize for photo capture on initialization
|
|
145
|
+
// Auto-optimize for photo capture on initialization with specified quality
|
|
135
146
|
setupUseCases(false); // Always use photo-optimized mode
|
|
136
|
-
Log.d("Camera", "Initialized with photo capture optimization");
|
|
147
|
+
Log.d("Camera", "Initialized with photo capture optimization and quality: " + desiredJpegQuality);
|
|
137
148
|
call.resolve();
|
|
138
149
|
} catch (ExecutionException | InterruptedException e) {
|
|
139
150
|
e.printStackTrace();
|
|
@@ -221,7 +232,7 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
221
232
|
imageCaptureBuilder.setTargetResolution(resolution);
|
|
222
233
|
}
|
|
223
234
|
imageCaptureBuilder.setCaptureMode(ImageCapture.CAPTURE_MODE_MAXIMIZE_QUALITY) // Prioritize quality over speed
|
|
224
|
-
.setJpegQuality(
|
|
235
|
+
.setJpegQuality(desiredJpegQuality); // Use quality set during initialization
|
|
225
236
|
|
|
226
237
|
// Add image stabilization if available (API 28+)
|
|
227
238
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
|
|
@@ -378,6 +389,7 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
378
389
|
try {
|
|
379
390
|
camera = cameraProvider.bindToLifecycle((LifecycleOwner) getContext(), cameraSelector, useCaseGroup);
|
|
380
391
|
previewView.setVisibility(View.VISIBLE);
|
|
392
|
+
previewView.setBackgroundColor(Color.BLACK);
|
|
381
393
|
makeWebViewTransparent();
|
|
382
394
|
|
|
383
395
|
// Initialize responsive auto-focus for better performance
|
|
@@ -400,6 +412,7 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
400
412
|
try {
|
|
401
413
|
restoreWebViewBackground();
|
|
402
414
|
previewView.setVisibility(View.INVISIBLE);
|
|
415
|
+
previewView.setBackgroundColor(Color.BLACK);
|
|
403
416
|
cameraProvider.unbindAll();
|
|
404
417
|
call.resolve();
|
|
405
418
|
} catch (Exception e) {
|
|
@@ -421,11 +434,26 @@ public class CameraPreviewPlugin extends Plugin {
|
|
|
421
434
|
@PluginMethod
|
|
422
435
|
public void toggleTorch(PluginCall call) {
|
|
423
436
|
try {
|
|
424
|
-
|
|
437
|
+
boolean torchOn = call.getBoolean("on", true);
|
|
438
|
+
|
|
439
|
+
if (torchOn) {
|
|
425
440
|
camera.getCameraControl().enableTorch(true);
|
|
426
441
|
} else {
|
|
427
442
|
camera.getCameraControl().enableTorch(false);
|
|
428
443
|
}
|
|
444
|
+
|
|
445
|
+
// Check if it's front camera and adjust background accordingly
|
|
446
|
+
if (cameraSelector != null && cameraSelector.getLensFacing() == CameraSelector.LENS_FACING_FRONT) {
|
|
447
|
+
if (torchOn) {
|
|
448
|
+
previewView.setBackgroundColor(Color.WHITE);
|
|
449
|
+
} else {
|
|
450
|
+
previewView.setBackgroundColor(Color.BLACK);
|
|
451
|
+
}
|
|
452
|
+
} else {
|
|
453
|
+
// For back camera, ensure everything is back to normal
|
|
454
|
+
previewView.setBackgroundColor(Color.BLACK);
|
|
455
|
+
}
|
|
456
|
+
|
|
429
457
|
call.resolve();
|
|
430
458
|
} catch (Exception e) {
|
|
431
459
|
call.reject(e.getMessage());
|
package/dist/docs.json
CHANGED
|
@@ -7,8 +7,14 @@
|
|
|
7
7
|
"methods": [
|
|
8
8
|
{
|
|
9
9
|
"name": "initialize",
|
|
10
|
-
"signature": "() => Promise<void>",
|
|
11
|
-
"parameters": [
|
|
10
|
+
"signature": "(options?: { quality?: number | undefined; } | undefined) => Promise<void>",
|
|
11
|
+
"parameters": [
|
|
12
|
+
{
|
|
13
|
+
"name": "options",
|
|
14
|
+
"docs": "",
|
|
15
|
+
"type": "{ quality?: number | undefined; } | undefined"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
12
18
|
"returns": "Promise<void>",
|
|
13
19
|
"tags": [],
|
|
14
20
|
"docs": "",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAuEA,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,yEAAmB,CAAA;IACnB,yEAAmB,CAAA;IACnB,yEAAmB,CAAA;IACnB,2EAAoB,CAAA;IACpB,qEAAiB,CAAA;IACjB,qEAAiB,CAAA;AACnB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB","sourcesContent":["import { PluginListenerHandle } from \"@capacitor/core\";\n\nexport interface CameraPreviewPlugin {\n initialize(): Promise<void>;\n getResolution(): Promise<{resolution: string}>;\n setResolution(options: {resolution: number}): Promise<void>;\n getAllCameras(): Promise<{cameras: string[]}>;\n getSelectedCamera(): Promise<{selectedCamera: string}>;\n selectCamera(options: {cameraID: string; }): Promise<void>;\n setScanRegion(options: {region:ScanRegion}): Promise<void>;\n setZoom(options: {factor: number}): Promise<void>;\n setFocus(options: {x: number, y: number}): Promise<void>;\n /**\n * Web Only\n */\n setDefaultUIElementURL(url:string): Promise<void>;\n /**\n * Web Only\n */\n setElement(ele:HTMLElement): Promise<void>;\n startCamera(): Promise<void>;\n stopCamera(): Promise<void>;\n /**\n * take a snapshot as base64.\n */\n takeSnapshot(options:{quality?:number}): Promise<{base64:string}>;\n /**\n * save a frame internally. Android and iOS only.\n */\n saveFrame(): Promise<{success:boolean}>;\n /**\n * take a snapshot on to a canvas. Web Only\n */\n takeSnapshot2(options:{canvas:HTMLCanvasElement,maxLength?:number}): Promise<{scaleRatio?:number}>;\n takePhoto(options: {pathToSave?:string,includeBase64?: boolean}): Promise<{path?:string,base64?:string,blob?:Blob}>;\n toggleTorch(options: {on: boolean}): Promise<void>;\n /**\n * get the orientation of the device.\n */\n getOrientation(): Promise<{\"orientation\":\"PORTRAIT\"|\"LANDSCAPE\"}>;\n startRecording(): Promise<void>;\n stopRecording(options:{includeBase64?:boolean}): Promise<{path?:string,base64?:string,blob?:Blob}>;\n setLayout(options: {top: string, left:string, width:string, height:string}): Promise<void>;\n requestCameraPermission(): Promise<void>;\n requestMicroPhonePermission(): Promise<void>;\n isOpen():Promise<{isOpen:boolean}>;\n addListener(\n eventName: 'onPlayed',\n listenerFunc: onPlayedListener,\n ): Promise<PluginListenerHandle>;\n addListener(\n eventName: 'onOrientationChanged',\n listenerFunc: onOrientationChangedListener,\n ): Promise<PluginListenerHandle>;\n removeAllListeners(): Promise<void>;\n}\n\nexport type onPlayedListener = (result:{resolution:string}) => void;\nexport type onOrientationChangedListener = () => void;\n\n/**\n * measuredByPercentage: 0 in pixel, 1 in percent\n */\nexport interface ScanRegion{\n left: number;\n top: number;\n right: number;\n bottom: number;\n measuredByPercentage: number;\n}\n\nexport enum EnumResolution {\n RESOLUTION_AUTO = 0,\n RESOLUTION_480P = 1,\n RESOLUTION_720P = 2,\n RESOLUTION_1080P = 3,\n RESOLUTION_2K = 4,\n RESOLUTION_4K = 5\n}\n"]}
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/definitions.ts"],"names":[],"mappings":"AAuEA,MAAM,CAAN,IAAY,cAOX;AAPD,WAAY,cAAc;IACxB,yEAAmB,CAAA;IACnB,yEAAmB,CAAA;IACnB,yEAAmB,CAAA;IACnB,2EAAoB,CAAA;IACpB,qEAAiB,CAAA;IACjB,qEAAiB,CAAA;AACnB,CAAC,EAPW,cAAc,KAAd,cAAc,QAOzB","sourcesContent":["import { PluginListenerHandle } from \"@capacitor/core\";\n\nexport interface CameraPreviewPlugin {\n initialize(options?: { quality?: number }): Promise<void>;\n getResolution(): Promise<{resolution: string}>;\n setResolution(options: {resolution: number}): Promise<void>;\n getAllCameras(): Promise<{cameras: string[]}>;\n getSelectedCamera(): Promise<{selectedCamera: string}>;\n selectCamera(options: {cameraID: string; }): Promise<void>;\n setScanRegion(options: {region:ScanRegion}): Promise<void>;\n setZoom(options: {factor: number}): Promise<void>;\n setFocus(options: {x: number, y: number}): Promise<void>;\n /**\n * Web Only\n */\n setDefaultUIElementURL(url:string): Promise<void>;\n /**\n * Web Only\n */\n setElement(ele:HTMLElement): Promise<void>;\n startCamera(): Promise<void>;\n stopCamera(): Promise<void>;\n /**\n * take a snapshot as base64.\n */\n takeSnapshot(options:{quality?:number}): Promise<{base64:string}>;\n /**\n * save a frame internally. Android and iOS only.\n */\n saveFrame(): Promise<{success:boolean}>;\n /**\n * take a snapshot on to a canvas. Web Only\n */\n takeSnapshot2(options:{canvas:HTMLCanvasElement,maxLength?:number}): Promise<{scaleRatio?:number}>;\n takePhoto(options: {pathToSave?:string,includeBase64?: boolean}): Promise<{path?:string,base64?:string,blob?:Blob}>;\n toggleTorch(options: {on: boolean}): Promise<void>;\n /**\n * get the orientation of the device.\n */\n getOrientation(): Promise<{\"orientation\":\"PORTRAIT\"|\"LANDSCAPE\"}>;\n startRecording(): Promise<void>;\n stopRecording(options:{includeBase64?:boolean}): Promise<{path?:string,base64?:string,blob?:Blob}>;\n setLayout(options: {top: string, left:string, width:string, height:string}): Promise<void>;\n requestCameraPermission(): Promise<void>;\n requestMicroPhonePermission(): Promise<void>;\n isOpen():Promise<{isOpen:boolean}>;\n addListener(\n eventName: 'onPlayed',\n listenerFunc: onPlayedListener,\n ): Promise<PluginListenerHandle>;\n addListener(\n eventName: 'onOrientationChanged',\n listenerFunc: onOrientationChangedListener,\n ): Promise<PluginListenerHandle>;\n removeAllListeners(): Promise<void>;\n}\n\nexport type onPlayedListener = (result:{resolution:string}) => void;\nexport type onOrientationChangedListener = () => void;\n\n/**\n * measuredByPercentage: 0 in pixel, 1 in percent\n */\nexport interface ScanRegion{\n left: number;\n top: number;\n right: number;\n bottom: number;\n measuredByPercentage: number;\n}\n\nexport enum EnumResolution {\n RESOLUTION_AUTO = 0,\n RESOLUTION_480P = 1,\n RESOLUTION_720P = 2,\n RESOLUTION_1080P = 3,\n RESOLUTION_2K = 4,\n RESOLUTION_4K = 5\n}\n"]}
|
package/dist/esm/web.d.ts
CHANGED
|
@@ -14,7 +14,10 @@ export declare class CameraPreviewWeb extends WebPlugin implements CameraPreview
|
|
|
14
14
|
getOrientation(): Promise<{
|
|
15
15
|
"orientation": "PORTRAIT" | "LANDSCAPE";
|
|
16
16
|
}>;
|
|
17
|
-
|
|
17
|
+
private desiredJpegQuality;
|
|
18
|
+
initialize(options?: {
|
|
19
|
+
quality?: number;
|
|
20
|
+
}): Promise<void>;
|
|
18
21
|
getResolution(): Promise<{
|
|
19
22
|
resolution: string;
|
|
20
23
|
}>;
|
package/dist/esm/web.js
CHANGED
|
@@ -7,6 +7,7 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
7
7
|
constructor() {
|
|
8
8
|
super(...arguments);
|
|
9
9
|
this.hasMicrophone = false;
|
|
10
|
+
this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)
|
|
10
11
|
}
|
|
11
12
|
async setDefaultUIElementURL(url) {
|
|
12
13
|
CameraEnhancer.defaultUIElementURL = url;
|
|
@@ -26,7 +27,12 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
26
27
|
return { orientation: "LANDSCAPE" };
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
async initialize() {
|
|
30
|
+
async initialize(options) {
|
|
31
|
+
// Get quality parameter from initialization, default to 95% if not specified
|
|
32
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
33
|
+
this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
34
|
+
console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);
|
|
35
|
+
}
|
|
30
36
|
this.camera = await CameraEnhancer.createInstance();
|
|
31
37
|
this.camera.on("played", (playCallBackInfo) => {
|
|
32
38
|
this.notifyListeners("onPlayed", { resolution: playCallBackInfo.width + "x" + playCallBackInfo.height });
|
|
@@ -236,9 +242,9 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
236
242
|
}
|
|
237
243
|
async takeSnapshot(options) {
|
|
238
244
|
if (this.camera) {
|
|
239
|
-
let desiredQuality =
|
|
240
|
-
if (options.quality) {
|
|
241
|
-
desiredQuality = options.quality;
|
|
245
|
+
let desiredQuality = this.desiredJpegQuality;
|
|
246
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
247
|
+
desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
242
248
|
}
|
|
243
249
|
let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);
|
|
244
250
|
let base64 = dataURL.replace("data:image/jpeg;base64,", "");
|
|
@@ -333,7 +339,7 @@ export class CameraPreviewWeb extends WebPlugin {
|
|
|
333
339
|
regionRight: 100,
|
|
334
340
|
regionMeasuredByPercentage: 1
|
|
335
341
|
});
|
|
336
|
-
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg"));
|
|
342
|
+
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg", this.desiredJpegQuality));
|
|
337
343
|
this.applyScanRegion();
|
|
338
344
|
return { base64: base64 };
|
|
339
345
|
}
|
package/dist/esm/web.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer, PlayCallbackInfo } from 'dynamsoft-camera-enhancer';\nimport { CameraPreviewPlugin, EnumResolution, ScanRegion } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\n\nexport class CameraPreviewWeb extends WebPlugin implements CameraPreviewPlugin {\n private camera:CameraEnhancer | undefined;\n private container:HTMLElement | undefined;\n private region:ScanRegion | undefined;\n private recorder:RecordRTC | null | undefined;\n private hasMicrophone: boolean = false;\n async setDefaultUIElementURL(url: string): Promise<void> {\n CameraEnhancer.defaultUIElementURL = url;\n }\n\n async setElement(ele: HTMLElement): Promise<void> {\n this.container = ele;\n }\n\n saveFrame(): Promise<{ success: boolean; }> {\n throw new Error('Method not implemented.');\n }\n\n async getOrientation(): Promise<{\"orientation\":\"PORTRAIT\"|\"LANDSCAPE\"}> {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return {orientation:\"PORTRAIT\"};\n }else{\n return {orientation:\"LANDSCAPE\"};\n }\n }\n\n async initialize(): Promise<void> {\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo:PlayCallbackInfo) => {\n this.notifyListeners(\"onPlayed\", {resolution:playCallBackInfo.width+\"x\"+playCallBackInfo.height});\n try {\n let canvas = this.camera!.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n } catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }else{\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n })\n }\n\n async getResolution(): Promise<{ resolution: string; }> {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution:string = rsl[0] + \"x\" + rsl[1];\n return {resolution: resolution};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async setResolution(options: { resolution: number; }): Promise<void> {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P){\n width = 640;\n height = 480;\n } else if (res == EnumResolution.RESOLUTION_720P){\n width = 1280;\n height = 720;\n } else if (res == EnumResolution.RESOLUTION_1080P){\n width = 1920;\n height = 1080;\n } else if (res == EnumResolution.RESOLUTION_2K){\n width = 2560;\n height = 1440;\n } else if (res == EnumResolution.RESOLUTION_4K){\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width,height);\n return;\n } else {\n throw new Error('Camera not initialized');\n }\n }\n\n async getAllCameras(): Promise<{ cameras: string[]; }> {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels:string[] = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return {cameras:labels};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async getSelectedCamera(): Promise<{ selectedCamera: string; }> {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return {selectedCamera:cameraInfo.label};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async selectCamera(options: { cameraID: string; }): Promise<void> {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras()\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async setScanRegion(options: { region: ScanRegion; }): Promise<void> {\n if (this.camera){\n this.region = options.region;\n this.applyScanRegion();\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n applyScanRegion(){\n if (this.camera && this.region){\n this.camera.setScanRegion({\n regionLeft:this.region.left,\n regionTop:this.region.top,\n regionRight:this.region.right,\n regionBottom:this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n\n async setZoom(options: { factor: number; }): Promise<void> {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async setFocus(options: {x: number, y: number}): Promise<void> {\n if (this.camera) {\n this.camera.setFocus({\n mode:\"manual\",\n area:{\n centerPoint:{x:options.x.toString(),y:options.y.toString()}\n }\n });\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async toggleTorch(options: { on: boolean; }): Promise<void> {\n if (this.camera) {\n try{\n if (options[\"on\"]){\n await this.camera.turnOnTorch();\n }else{\n await this.camera.turnOffTorch();\n }\n } catch (e){\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n\n async startCamera(): Promise<void> {\n if (this.camera) {\n await this.camera?.open(true);\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n await this.camera?.setZoom(1.001);\n await this.camera?.setZoom(1.0);\n }\n setTimeout(resetZoom,500);\n }\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n isSafari():boolean{\n const u = navigator.userAgent.toLowerCase()\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }else{\n return false;\n }\n }\n\n async stopCamera(): Promise<void> {\n if (this.camera) {\n this.camera.close(true);\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async isOpen(): Promise<{isOpen:boolean}> {\n if (this.camera) {\n return {isOpen:this.camera.isOpen()};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async takeSnapshot(options:{quality?:number}): Promise<{ base64: string;}> {\n if (this.camera) {\n let desiredQuality = 85;\n if (options.quality) {\n desiredQuality = options.quality;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg',desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\",\"\");\n return {base64:base64};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async takeSnapshot2(options:{canvas:HTMLCanvasElement,maxLength?:number}): Promise<{scaleRatio?:number}> {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength/width*height;\n scaleRatio = options.maxLength/width;\n }else{\n targetHeight = options.maxLength;\n targetWidth = options.maxLength/height*width;\n scaleRatio = options.maxLength/height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }else{\n this.drawFullFrame(canvas);\n }\n }else{\n this.drawFullFrame(canvas);\n }\n return {scaleRatio:scaleRatio};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n drawFullFrame(canvas:HTMLCanvasElement):HTMLCanvasElement{\n let video = this.camera?.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n\n async takePhoto(_options:{includeBase64?:boolean}): Promise<{ path?:string, base64?: string, blob?:Blob }> {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream:MediaStream = video.srcObject as MediaStream;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture:any = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return {blob:blob}; \n } catch (error) {\n console.log(error);\n }\n }else{\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion(\n {\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n }\n )\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\"));\n this.applyScanRegion();\n return {base64:base64};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n removeDataURLHead(dataURL:string){\n return dataURL.substring(dataURL.indexOf(\",\")+1,dataURL.length);\n }\n\n\n async requestCameraPermission(): Promise<void> {\n const constraints = {video: true, audio: false};\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i=0;i<tracks.length;i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n\n async requestMicroPhonePermission(): Promise<void> {\n try {\n const constraints = {video: false, audio: true};\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i=0;i<tracks.length;i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n } catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n\n async startRecording(): Promise<void> {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject as MediaStream, {\n type: 'video'\n });\n this.recorder.startRecording();\n }else{\n throw new Error(\"camera not initialized\");\n }\n }\n\n async stopRecording(): Promise<{blob:Blob}> {\n return new Promise<{blob:Blob}>((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder!.getBlob();\n this.recorder!.destroy();\n this.recorder = null;\n resolve({blob})\n }\n this.recorder.stopRecording(stopRecordingCallback);\n }else{\n reject(\"recorder not initialized\");\n }\n }) \n }\n\n async setLayout(options: {top: string,left:string,width:string, height:string}): Promise<void> {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }else{\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"web.js","sourceRoot":"","sources":["../../src/web.ts"],"names":[],"mappings":"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","sourcesContent":["import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer, PlayCallbackInfo } from 'dynamsoft-camera-enhancer';\nimport { CameraPreviewPlugin, EnumResolution, ScanRegion } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\n\nexport class CameraPreviewWeb extends WebPlugin implements CameraPreviewPlugin {\n private camera:CameraEnhancer | undefined;\n private container:HTMLElement | undefined;\n private region:ScanRegion | undefined;\n private recorder:RecordRTC | null | undefined;\n private hasMicrophone: boolean = false;\n async setDefaultUIElementURL(url: string): Promise<void> {\n CameraEnhancer.defaultUIElementURL = url;\n }\n\n async setElement(ele: HTMLElement): Promise<void> {\n this.container = ele;\n }\n\n saveFrame(): Promise<{ success: boolean; }> {\n throw new Error('Method not implemented.');\n }\n\n async getOrientation(): Promise<{\"orientation\":\"PORTRAIT\"|\"LANDSCAPE\"}> {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return {orientation:\"PORTRAIT\"};\n }else{\n return {orientation:\"LANDSCAPE\"};\n }\n }\n\n private desiredJpegQuality: number = 0.95; // Default to high quality (0.0-1.0)\n\n async initialize(options?: { quality?: number }): Promise<void> {\n // Get quality parameter from initialization, default to 95% if not specified\n if (options?.quality !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n \n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo:PlayCallbackInfo) => {\n this.notifyListeners(\"onPlayed\", {resolution:playCallBackInfo.width+\"x\"+playCallBackInfo.height});\n try {\n let canvas = this.camera!.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n } catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }else{\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n })\n }\n\n async getResolution(): Promise<{ resolution: string; }> {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution:string = rsl[0] + \"x\" + rsl[1];\n return {resolution: resolution};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async setResolution(options: { resolution: number; }): Promise<void> {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P){\n width = 640;\n height = 480;\n } else if (res == EnumResolution.RESOLUTION_720P){\n width = 1280;\n height = 720;\n } else if (res == EnumResolution.RESOLUTION_1080P){\n width = 1920;\n height = 1080;\n } else if (res == EnumResolution.RESOLUTION_2K){\n width = 2560;\n height = 1440;\n } else if (res == EnumResolution.RESOLUTION_4K){\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width,height);\n return;\n } else {\n throw new Error('Camera not initialized');\n }\n }\n\n async getAllCameras(): Promise<{ cameras: string[]; }> {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels:string[] = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return {cameras:labels};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async getSelectedCamera(): Promise<{ selectedCamera: string; }> {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return {selectedCamera:cameraInfo.label};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async selectCamera(options: { cameraID: string; }): Promise<void> {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras()\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async setScanRegion(options: { region: ScanRegion; }): Promise<void> {\n if (this.camera){\n this.region = options.region;\n this.applyScanRegion();\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n applyScanRegion(){\n if (this.camera && this.region){\n this.camera.setScanRegion({\n regionLeft:this.region.left,\n regionTop:this.region.top,\n regionRight:this.region.right,\n regionBottom:this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n\n async setZoom(options: { factor: number; }): Promise<void> {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async setFocus(options: {x: number, y: number}): Promise<void> {\n if (this.camera) {\n this.camera.setFocus({\n mode:\"manual\",\n area:{\n centerPoint:{x:options.x.toString(),y:options.y.toString()}\n }\n });\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async toggleTorch(options: { on: boolean; }): Promise<void> {\n if (this.camera) {\n try{\n if (options[\"on\"]){\n await this.camera.turnOnTorch();\n }else{\n await this.camera.turnOffTorch();\n }\n } catch (e){\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n\n async startCamera(): Promise<void> {\n if (this.camera) {\n await this.camera?.open(true);\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n await this.camera?.setZoom(1.001);\n await this.camera?.setZoom(1.0);\n }\n setTimeout(resetZoom,500);\n }\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n isSafari():boolean{\n const u = navigator.userAgent.toLowerCase()\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }else{\n return false;\n }\n }\n\n async stopCamera(): Promise<void> {\n if (this.camera) {\n this.camera.close(true);\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n async isOpen(): Promise<{isOpen:boolean}> {\n if (this.camera) {\n return {isOpen:this.camera.isOpen()};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async takeSnapshot(options:{quality?:number}): Promise<{ base64: string;}> {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if (options?.quality !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\",\"\");\n return {base64:base64};\n }else{\n throw new Error('Camera not initialized');\n }\n }\n\n async takeSnapshot2(options:{canvas:HTMLCanvasElement,maxLength?:number}): Promise<{scaleRatio?:number}> {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength/width*height;\n scaleRatio = options.maxLength/width;\n }else{\n targetHeight = options.maxLength;\n targetWidth = options.maxLength/height*width;\n scaleRatio = options.maxLength/height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }else{\n this.drawFullFrame(canvas);\n }\n }else{\n this.drawFullFrame(canvas);\n }\n return {scaleRatio:scaleRatio};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n drawFullFrame(canvas:HTMLCanvasElement):HTMLCanvasElement{\n let video = this.camera?.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n\n async takePhoto(_options:{includeBase64?:boolean}): Promise<{ path?:string, base64?: string, blob?:Blob }> {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream:MediaStream = video.srcObject as MediaStream;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture:any = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return {blob:blob}; \n } catch (error) {\n console.log(error);\n }\n }else{\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion(\n {\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n }\n )\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n return {base64:base64};\n }else {\n throw new Error('Camera not initialized');\n }\n }\n\n removeDataURLHead(dataURL:string){\n return dataURL.substring(dataURL.indexOf(\",\")+1,dataURL.length);\n }\n\n\n async requestCameraPermission(): Promise<void> {\n const constraints = {video: true, audio: false};\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i=0;i<tracks.length;i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n\n async requestMicroPhonePermission(): Promise<void> {\n try {\n const constraints = {video: false, audio: true};\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i=0;i<tracks.length;i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n } catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n\n async startRecording(): Promise<void> {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject as MediaStream, {\n type: 'video'\n });\n this.recorder.startRecording();\n }else{\n throw new Error(\"camera not initialized\");\n }\n }\n\n async stopRecording(): Promise<{blob:Blob}> {\n return new Promise<{blob:Blob}>((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder!.getBlob();\n this.recorder!.destroy();\n this.recorder = null;\n resolve({blob})\n }\n this.recorder.stopRecording(stopRecordingCallback);\n }else{\n reject(\"recorder not initialized\");\n }\n }) \n }\n\n async setLayout(options: {top: string,left:string,width:string, height:string}): Promise<void> {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }else{\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -23,6 +23,7 @@ class CameraPreviewWeb extends core.WebPlugin {
|
|
|
23
23
|
constructor() {
|
|
24
24
|
super(...arguments);
|
|
25
25
|
this.hasMicrophone = false;
|
|
26
|
+
this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)
|
|
26
27
|
}
|
|
27
28
|
async setDefaultUIElementURL(url) {
|
|
28
29
|
dynamsoftCameraEnhancer.CameraEnhancer.defaultUIElementURL = url;
|
|
@@ -42,7 +43,12 @@ class CameraPreviewWeb extends core.WebPlugin {
|
|
|
42
43
|
return { orientation: "LANDSCAPE" };
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
async initialize() {
|
|
46
|
+
async initialize(options) {
|
|
47
|
+
// Get quality parameter from initialization, default to 95% if not specified
|
|
48
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
49
|
+
this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
50
|
+
console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);
|
|
51
|
+
}
|
|
46
52
|
this.camera = await dynamsoftCameraEnhancer.CameraEnhancer.createInstance();
|
|
47
53
|
this.camera.on("played", (playCallBackInfo) => {
|
|
48
54
|
this.notifyListeners("onPlayed", { resolution: playCallBackInfo.width + "x" + playCallBackInfo.height });
|
|
@@ -252,9 +258,9 @@ class CameraPreviewWeb extends core.WebPlugin {
|
|
|
252
258
|
}
|
|
253
259
|
async takeSnapshot(options) {
|
|
254
260
|
if (this.camera) {
|
|
255
|
-
let desiredQuality =
|
|
256
|
-
if (options.quality) {
|
|
257
|
-
desiredQuality = options.quality;
|
|
261
|
+
let desiredQuality = this.desiredJpegQuality;
|
|
262
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
263
|
+
desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
258
264
|
}
|
|
259
265
|
let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);
|
|
260
266
|
let base64 = dataURL.replace("data:image/jpeg;base64,", "");
|
|
@@ -349,7 +355,7 @@ class CameraPreviewWeb extends core.WebPlugin {
|
|
|
349
355
|
regionRight: 100,
|
|
350
356
|
regionMeasuredByPercentage: 1
|
|
351
357
|
});
|
|
352
|
-
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg"));
|
|
358
|
+
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg", this.desiredJpegQuality));
|
|
353
359
|
this.applyScanRegion();
|
|
354
360
|
return { base64: base64 };
|
|
355
361
|
}
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize() {\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = 85;\n if (options.quality) {\n desiredQuality = options.quality;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\"));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -20,6 +20,7 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
20
20
|
constructor() {
|
|
21
21
|
super(...arguments);
|
|
22
22
|
this.hasMicrophone = false;
|
|
23
|
+
this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)
|
|
23
24
|
}
|
|
24
25
|
async setDefaultUIElementURL(url) {
|
|
25
26
|
dynamsoftCameraEnhancer.CameraEnhancer.defaultUIElementURL = url;
|
|
@@ -39,7 +40,12 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
39
40
|
return { orientation: "LANDSCAPE" };
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
async initialize() {
|
|
43
|
+
async initialize(options) {
|
|
44
|
+
// Get quality parameter from initialization, default to 95% if not specified
|
|
45
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
46
|
+
this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
47
|
+
console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);
|
|
48
|
+
}
|
|
43
49
|
this.camera = await dynamsoftCameraEnhancer.CameraEnhancer.createInstance();
|
|
44
50
|
this.camera.on("played", (playCallBackInfo) => {
|
|
45
51
|
this.notifyListeners("onPlayed", { resolution: playCallBackInfo.width + "x" + playCallBackInfo.height });
|
|
@@ -249,9 +255,9 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
249
255
|
}
|
|
250
256
|
async takeSnapshot(options) {
|
|
251
257
|
if (this.camera) {
|
|
252
|
-
let desiredQuality =
|
|
253
|
-
if (options.quality) {
|
|
254
|
-
desiredQuality = options.quality;
|
|
258
|
+
let desiredQuality = this.desiredJpegQuality;
|
|
259
|
+
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
260
|
+
desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
255
261
|
}
|
|
256
262
|
let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);
|
|
257
263
|
let base64 = dataURL.replace("data:image/jpeg;base64,", "");
|
|
@@ -346,7 +352,7 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
346
352
|
regionRight: 100,
|
|
347
353
|
regionMeasuredByPercentage: 1
|
|
348
354
|
});
|
|
349
|
-
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg"));
|
|
355
|
+
let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL("image/jpeg", this.desiredJpegQuality));
|
|
350
356
|
this.applyScanRegion();
|
|
351
357
|
return { base64: base64 };
|
|
352
358
|
}
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize() {\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = 85;\n if (options.quality) {\n desiredQuality = options.quality;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\"));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
|
@@ -32,7 +32,17 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
32
32
|
var lastFocusTime: Date = Date()
|
|
33
33
|
private let focusThrottleInterval: TimeInterval = 0.5
|
|
34
34
|
var currentCameraDevice: AVCaptureDevice?
|
|
35
|
+
|
|
36
|
+
// Store the desired JPEG quality, set during initialization
|
|
37
|
+
var desiredJpegQuality: Float = 0.95 // Default to high quality (0.0-1.0)
|
|
38
|
+
|
|
35
39
|
@objc func initialize(_ call: CAPPluginCall) {
|
|
40
|
+
// Get quality parameter from initialization, default to 95% if not specified
|
|
41
|
+
if let quality = call.getInt("quality") {
|
|
42
|
+
desiredJpegQuality = Float(max(1, min(100, quality))) / 100.0
|
|
43
|
+
print("Camera initialized with JPEG quality: \(desiredJpegQuality)")
|
|
44
|
+
}
|
|
45
|
+
|
|
36
46
|
// Check camera permission status first
|
|
37
47
|
let authStatus = AVCaptureDevice.authorizationStatus(for: .video)
|
|
38
48
|
|
|
@@ -48,8 +58,22 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
48
58
|
return
|
|
49
59
|
}
|
|
50
60
|
|
|
51
|
-
|
|
52
|
-
|
|
61
|
+
// Safely get the view bounds
|
|
62
|
+
guard let viewController = self.bridge?.viewController,
|
|
63
|
+
let viewBounds = viewController.view?.bounds else {
|
|
64
|
+
call.reject("Unable to access view controller or view bounds")
|
|
65
|
+
return
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// Safely get the webView and its superview
|
|
69
|
+
guard let webView = self.webView,
|
|
70
|
+
let webViewSuperview = webView.superview else {
|
|
71
|
+
call.reject("Unable to access webView or its superview")
|
|
72
|
+
return
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
self.previewView = PreviewView.init(frame: viewBounds)
|
|
76
|
+
webViewSuperview.insertSubview(self.previewView, belowSubview: webView)
|
|
53
77
|
|
|
54
78
|
// Only initialize capture session if permission is granted
|
|
55
79
|
if authStatus == .authorized {
|
|
@@ -65,20 +89,23 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
65
89
|
}
|
|
66
90
|
|
|
67
91
|
@objc func rotated() {
|
|
68
|
-
let bounds = self.webView?.bounds
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
92
|
+
guard let bounds = self.webView?.bounds else {
|
|
93
|
+
notifyListeners("onOrientationChanged",data: nil)
|
|
94
|
+
return
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
self.previewView.frame = bounds
|
|
98
|
+
if UIDevice.current.orientation == UIDeviceOrientation.portrait {
|
|
99
|
+
self.previewView.videoPreviewLayer.connection?.videoOrientation = .portrait
|
|
100
|
+
lastValidOrientation = "portrait"
|
|
101
|
+
}else if UIDevice.current.orientation == UIDeviceOrientation.landscapeLeft {
|
|
102
|
+
self.previewView.videoPreviewLayer.connection?.videoOrientation = .landscapeRight
|
|
103
|
+
lastValidOrientation = "landscapeRight"
|
|
104
|
+
}else if UIDevice.current.orientation == UIDeviceOrientation.landscapeRight {
|
|
105
|
+
self.previewView.videoPreviewLayer.connection?.videoOrientation = .landscapeLeft
|
|
106
|
+
lastValidOrientation = "landscapeLeft"
|
|
81
107
|
}
|
|
108
|
+
|
|
82
109
|
notifyListeners("onOrientationChanged",data: nil)
|
|
83
110
|
}
|
|
84
111
|
|
|
@@ -94,6 +121,18 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
94
121
|
captureSession.startRunning()
|
|
95
122
|
DispatchQueue.main.async {
|
|
96
123
|
self?.triggerOnPlayed()
|
|
124
|
+
var keyWindow: UIWindow? = nil
|
|
125
|
+
if #available(iOS 13.0, *) {
|
|
126
|
+
keyWindow = UIApplication.shared.connectedScenes
|
|
127
|
+
.compactMap { $0 as? UIWindowScene }
|
|
128
|
+
.flatMap { $0.windows }
|
|
129
|
+
.first { $0.isKeyWindow }
|
|
130
|
+
} else {
|
|
131
|
+
keyWindow = UIApplication.shared.keyWindow
|
|
132
|
+
}
|
|
133
|
+
if let window = keyWindow {
|
|
134
|
+
window.backgroundColor = UIColor.black
|
|
135
|
+
}
|
|
97
136
|
}
|
|
98
137
|
}
|
|
99
138
|
|
|
@@ -160,11 +199,10 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
160
199
|
guard let videoDevice = getBestAvailableCameraDevice() else { return }
|
|
161
200
|
if enableVideoRecording {
|
|
162
201
|
let microphone = AVCaptureDevice.default(for: AVMediaType.audio)
|
|
163
|
-
if microphone
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
}
|
|
202
|
+
if let microphone = microphone,
|
|
203
|
+
let micInput = try? AVCaptureDeviceInput(device: microphone),
|
|
204
|
+
captureSession.canAddInput(micInput) {
|
|
205
|
+
captureSession.addInput(micInput)
|
|
168
206
|
}
|
|
169
207
|
}
|
|
170
208
|
|
|
@@ -373,7 +411,7 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
373
411
|
}
|
|
374
412
|
if takePhotoCall.getBool("includeBase64", false) {
|
|
375
413
|
let image = UIImage(data: imageData)
|
|
376
|
-
let base64 = getBase64FromImage(image: image!, quality:
|
|
414
|
+
let base64 = getBase64FromImage(image: image!, quality: desiredJpegQuality)
|
|
377
415
|
ret["base64"] = base64
|
|
378
416
|
}
|
|
379
417
|
do {
|
|
@@ -459,28 +497,52 @@ public class CameraPreviewPlugin: CAPPlugin, AVCaptureVideoDataOutputSampleBuffe
|
|
|
459
497
|
self.bridge?.webView!.scrollView.backgroundColor = UIColor.white
|
|
460
498
|
}
|
|
461
499
|
}
|
|
500
|
+
|
|
501
|
+
func getKeyWindow() -> UIWindow? {
|
|
502
|
+
if #available(iOS 13.0, *) {
|
|
503
|
+
return UIApplication.shared.connectedScenes
|
|
504
|
+
.compactMap { $0 as? UIWindowScene }
|
|
505
|
+
.flatMap { $0.windows }
|
|
506
|
+
.first { $0.isKeyWindow }
|
|
507
|
+
} else {
|
|
508
|
+
return UIApplication.shared.keyWindow
|
|
509
|
+
}
|
|
510
|
+
}
|
|
462
511
|
|
|
463
512
|
@objc func toggleTorch(_ call: CAPPluginCall) {
|
|
464
513
|
let device = videoInput.device
|
|
514
|
+
let torchOn = call.getBool("on", true) == true
|
|
465
515
|
if device.hasTorch {
|
|
466
516
|
do {
|
|
467
517
|
try device.lockForConfiguration()
|
|
468
|
-
|
|
469
|
-
device.torchMode = .on
|
|
470
|
-
} else {
|
|
471
|
-
device.torchMode = .off
|
|
472
|
-
}
|
|
518
|
+
device.torchMode = torchOn ? .on : .off
|
|
473
519
|
device.unlockForConfiguration()
|
|
474
520
|
} catch {
|
|
475
521
|
print("Torch could not be used")
|
|
476
522
|
}
|
|
477
523
|
}
|
|
524
|
+
DispatchQueue.main.async {
|
|
525
|
+
let isFrontTorch = !self.facingBack && torchOn
|
|
526
|
+
|
|
527
|
+
if let window = self.getKeyWindow() {
|
|
528
|
+
window.backgroundColor = isFrontTorch ? UIColor.white : UIColor.black
|
|
529
|
+
}
|
|
530
|
+
// Make webview and scrollView transparent so window background is visible
|
|
531
|
+
self.bridge?.webView?.isOpaque = false
|
|
532
|
+
self.bridge?.webView?.backgroundColor = UIColor.clear
|
|
533
|
+
self.bridge?.webView?.scrollView.backgroundColor = UIColor.clear
|
|
534
|
+
|
|
535
|
+
}
|
|
478
536
|
call.resolve()
|
|
479
537
|
}
|
|
538
|
+
|
|
480
539
|
|
|
481
540
|
@objc func stopCamera(_ call: CAPPluginCall) {
|
|
482
541
|
restoreWebViewBackground()
|
|
483
542
|
DispatchQueue.main.sync {
|
|
543
|
+
if let window = self.getKeyWindow() {
|
|
544
|
+
window.backgroundColor = UIColor.black
|
|
545
|
+
}
|
|
484
546
|
destroyCaptureSession()
|
|
485
547
|
}
|
|
486
548
|
call.resolve()
|
package/package.json
CHANGED