UNPKG

handwritten-mathematics-recogniser

Version:

Easy and abstracted way to recognise handwritten mathematics in a browser or in a web view.

40 lines (38 loc) 1.78 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const converter_1 = require("../../utility/converter"); const transformer_1 = require("../../utility/transformer"); class HandwrittenDigitTransformer { static transform(canvas) { const context = canvas.getContext('2d'); const image = converter_1.Converter.convertCanvasToImage(canvas); const boundingBox = transformer_1.Transformer.getBoundingBox(image); const translate = this.translate(image); const canvasCopy = document.createElement('canvas'); canvasCopy.width = 280; canvasCopy.height = 280; canvasCopy.className = 'canvas'; const copyCtx = canvasCopy.getContext('2d'); const dx = boundingBox.max.x - boundingBox.min.x + 1; const dy = boundingBox.max.y - boundingBox.min.y + 1; const scale = 200 / Math.max(dx, dy); copyCtx.translate(280 / 2, 280 / 2); copyCtx.scale(scale, scale); copyCtx.translate(-canvas.width / 2, -canvas.height / 2); copyCtx.translate(translate.x, translate.y); copyCtx.drawImage(context.canvas, 0, 0); const transformed = converter_1.Converter.convertCanvasToImage(canvasCopy); const serialized = transformer_1.Transformer.serializeImage(transformed); return serialized; } static translate(image) { const rows = image.length; const columns = image[0].length; const center = transformer_1.Transformer.getCenter(image); const x = Math.round(columns / 2 - center.x); const y = Math.round(rows / 2 - center.y); return { x, y }; } } exports.HandwrittenDigitTransformer = HandwrittenDigitTransformer; //# sourceMappingURL=handwritten-digit-transformer.js.map