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