diff options
author | Balearica <you@example.com> | 2022-08-11 08:10:29 +0300 |
---|---|---|
committer | Balearica <you@example.com> | 2022-08-11 08:10:29 +0300 |
commit | 75ddd6304109434a66064485bdaa23fb893990fa (patch) | |
tree | 0e10f1b6355f7bba8bc55ac3e173a57f5c84fb25 | |
parent | 1136e0a9411b28a5ca3c386e21d6c0e651e0071d (diff) |
Revert "Add support for ImageData and fix a hang in buffer handling (#610)"
This reverts commit 67848464ac6d89d00c3404e0ac90f36cf98c7233.
-rw-r--r-- | src/worker-script/utils/setImage.js | 30 | ||||
-rw-r--r-- | src/worker/browser/loadImage.js | 4 |
2 files changed, 9 insertions, 25 deletions
diff --git a/src/worker-script/utils/setImage.js b/src/worker-script/utils/setImage.js index c8fabcd..e9918db 100644 --- a/src/worker-script/utils/setImage.js +++ b/src/worker-script/utils/setImage.js @@ -9,37 +9,27 @@ const fileType = require('file-type'); * @access public */ module.exports = (TessModule, api, image) => { - const buf = (image instanceof Uint8Array) ? Buffer.from(image) : null; - const type = buf ? fileType(buf) : null; + const buf = Buffer.from(Array.from({ ...image, length: Object.keys(image).length })); + const type = fileType(buf); let bytesPerPixel = 0; let data = null; let pix = null; let w = 0; let h = 0; - - if (image instanceof ImageData) { - // The pixel format of ImageData is RGBA and technically - // Tesseract is expecting ABGR, but it does not seem to matter - // in practice, so to save effort the bytes are not rearranged. - data = TessModule._malloc(image.data.byteLength); - TessModule.HEAPU8.set(image.data, data); - w = image.width; - h = image.height; - bytesPerPixel = 4; - } else if (buf && type && type.mime === 'image/bmp') { - /* - * Although leptonica should support reading bmp, there is a bug of "compressed BMP files". - * As there is no solution, we need to use bmp-js for now. - * @see https://groups.google.com/forum/#!topic/tesseract-ocr/4mPD9zTxdxE - */ + /* + * Although leptonica should support reading bmp, there is a bug of "compressed BMP files". + * As there is no solution, we need to use bmp-js for now. + * @see https://groups.google.com/forum/#!topic/tesseract-ocr/4mPD9zTxdxE + */ + if (type && type.mime === 'image/bmp') { const bmpBuf = bmp.decode(buf); data = TessModule._malloc(bmpBuf.data.length * Uint8Array.BYTES_PER_ELEMENT); TessModule.HEAPU8.set(bmpBuf.data, data); w = bmpBuf.width; h = bmpBuf.height; bytesPerPixel = 4; - } else if (buf) { + } else { const ptr = TessModule._malloc(buf.length * Uint8Array.BYTES_PER_ELEMENT); TessModule.HEAPU8.set(buf, ptr); pix = TessModule._pixReadMem(ptr, buf.length); @@ -54,8 +44,6 @@ module.exports = (TessModule, api, image) => { .map((v, idx) => ( TessModule.getValue(pix + (idx * 4), 'i32') )); - } else { - throw Error('Unsupported image data container'); } /* diff --git a/src/worker/browser/loadImage.js b/src/worker/browser/loadImage.js index 34f047d..3102967 100644 --- a/src/worker/browser/loadImage.js +++ b/src/worker/browser/loadImage.js @@ -82,10 +82,6 @@ const loadImage = async (image) => { img = await fixOrientationFromUrlOrBlobOrFile(img); } data = await readFromBlobOrFile(img); - } else if (image instanceof ImageData) { - // Support a canvas' ImageData by passing it directly, - // where it is handled by setImage() without conversion. - return image; } return new Uint8Array(data); |