@scandit/web-datacapture-core
Version:
Scandit Data Capture SDK for the Web
45 lines (42 loc) • 1.63 kB
TypeScript
/// <reference types="emscripten" />
import { ImageConverterInstance, ImageBuffer } from './djinni-types/index.js';
type CanvasType = HTMLCanvasElement | OffscreenCanvas;
type CanvasContextType = CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D;
declare abstract class ImageConverterBase implements ImageConverterInstance {
protected readonly options: {
quality: number;
};
protected canvas?: CanvasType;
protected context?: CanvasContextType;
protected static readonly JPEG_IMAGE_MIME_TYPE = "image/jpeg";
constructor(options: {
quality: number;
});
/**
* Shoud return a new canvas for the current runtime. Usually an HTMLCanvasElement or an OffscreenCanvas.
*/
protected abstract getNewCanvas(width: number, height: number): CanvasType;
/**
* Should convert the canvas to a JPEG blob.
*/
protected abstract canvasToBlob(canvas: CanvasType): Promise<Blob | null>;
get quality(): number;
convertToJpeg(imageBuffer: ImageBuffer, orientation: number): Promise<Uint8Array>;
private validateAndExtractImageData;
private prepareCanvas;
private processImageData;
private validateImageData;
private convertToJpegBytes;
private ensureCanvas;
private createImageDataFromBuffer;
private isYUVFormat;
private isRGBAFormat;
private isRGBFormat;
private isGrayscaleFormat;
private createImageDataFromRGBAPlanes;
private createImageDataFromRGBPlanes;
private createImageDataFromGrayscalePlanes;
private getPixelFromPlane;
private applyRotation;
}
export { ImageConverterBase };