From 177529af062525df8d29038f20b89fc62eaada6f Mon Sep 17 00:00:00 2001 From: Romain Courteaud <romain@nexedi.com> Date: Tue, 31 Mar 2020 10:05:03 +0000 Subject: [PATCH] erp5_document_scanner: resize photo if needed Reduce the number of pixel managed by caman --- .../scanner_gadget_document_scanner_js.js | 38 +++++++++++++++++-- .../scanner_gadget_document_scanner_js.xml | 4 +- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.js b/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.js index 4b987f49ed..416909e380 100644 --- a/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.js +++ b/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.js @@ -502,7 +502,31 @@ .push(function () { return promiseCanvasToBlob(div.firstElementChild); }); + } + + function resizePhoto(blob, original_width, original_height) { + var expected_width = 2000; + if (original_width < expected_width) { + return blob; + } + // expected_height = parseInt((original_height * expected_width) / original_width); + + // alert(expected_width + ' ' + expected_height); + + return new RSVP.Queue(createImageBitmap(blob, { + resizeWidth: expected_width, + // resizeHeight: expected_height, + resizeQuality: 'high' + })) + .push(function (bitmap) { + var canvas = domsugar('canvas'); + canvas.width = bitmap.width; + canvas.height = bitmap.height; + + canvas.getContext('2d').drawImage(bitmap, 0, 0); + return promiseCanvasToBlob(canvas); + }); } function createLoadedImgElement(url) { @@ -528,7 +552,9 @@ gadget.element.querySelector('video').srcObject.getVideoTracks()[0] ), original_blob_url, - blob_url; + blob_url, + original_width, + original_height; return new RSVP.Queue() .push(function () { @@ -537,9 +563,12 @@ return image_capture.getPhotoCapabilities(); }) .push(function (capabilities) { + original_width = capabilities.imageWidth.max; + original_height = capabilities.imageHeight.max; + return image_capture.takePhoto({ - imageWidth: capabilities.imageWidth.max, - imageHeight: capabilities.imageHeight.max + imageWidth: original_width, + imageHeight: original_height }); }) .push(function (blob) { @@ -551,6 +580,9 @@ div = gadget.element.querySelector(".camera-input"); div.replaceChild(img, div.firstElementChild); + return resizePhoto(blob, original_width, original_height); + }) + .push(function (blob) { return fixPhotoOrientation(blob); }) .push(function (blob) { diff --git a/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.xml b/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.xml index 8dc29b80df..9b98ab8782 100644 --- a/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.xml +++ b/bt5/erp5_document_scanner/PathTemplateItem/web_page_module/scanner_gadget_document_scanner_js.xml @@ -244,7 +244,7 @@ </item> <item> <key> <string>serial</string> </key> - <value> <string>982.58248.12377.39526</string> </value> + <value> <string>982.58327.23330.31351</string> </value> </item> <item> <key> <string>state</string> </key> @@ -262,7 +262,7 @@ </tuple> <state> <tuple> - <float>1585644055.38</float> + <float>1585648785.07</float> <string>UTC</string> </tuple> </state> -- 2.30.9