s2-tools
Version:
A collection of geospatial tools primarily designed for WGS84, Web Mercator, and S2.
159 lines • 4.26 kB
TypeScript
/** JPEG Options */
export interface JPEGOptions {
skipMutation?: boolean;
colorTransform?: boolean;
formatAsRGBA?: boolean;
tolerantDecoding?: boolean;
maxResolutionInMP?: number;
maxMemoryUsageInMB?: number;
}
/** A Component of a JPEG image */
export interface JPEGComponent {
h: number;
v: number;
quantizationIdx: number;
blocksPerLine: number;
blocksPerColumn: number;
blocks: Int32Array[][];
huffmanTableDC: HuffmanNode[];
huffmanTableAC: HuffmanNode[];
quantizationTable: Int32Array;
pred: number;
dctZigZag: Int32Array;
}
/** A Component of a JPEG image organized into lines */
export interface OutComponent {
lines: Uint8Array[];
scaleX: number;
scaleY: number;
}
/** A JPEG frame */
export interface Frame {
extended: boolean;
progressive: boolean;
precision?: number;
scanLines: number;
samplesPerLine: number;
components: {
[id: number | string]: JPEGComponent;
};
componentsOrder: number[];
maxH: number;
maxV: number;
mcusPerLine: number;
mcusPerColumn: number;
}
/** Adobe APP14 marker */
export interface Adobe {
version: number;
flags0: number;
flags1: number;
transformCode: number;
}
/** JFIF marker */
export interface JFIF {
version: {
major: number;
minor: number;
};
densityUnits: number;
xDensity: number;
yDensity: number;
thumbWidth: number;
thumbHeight: number;
thumbData: Uint8Array;
}
/** The result of an individual parse */
export interface ParseResult {
data: Uint8Array;
outComponents: OutComponent[];
ready: boolean;
}
/** An Image organized for the JPEG decoder */
export interface Image {
width: number;
height: number;
exifBuffer: Uint8Array | null;
data: Uint8Array;
comments?: string[];
}
/**
* Decodes a JPEG image
* @param jpegData - The JPEG data
* @param userOpts - The user provided options
* @param jpegTables - The JPEG tables (if provided)
* @returns - The decoded image
*/
export declare function decodeJpegData(jpegData: ArrayBufferLike, userOpts?: JPEGOptions, jpegTables?: number[]): Image;
/**
* Decodes a JPEG image
* @param buffer - The JPEG data
* @param jpegTables - The JPEG tables (if provided)
* @returns - The decoded image as a buffer
*/
export declare function jpegDecoder(buffer: ArrayBufferLike, jpegTables?: number[]): ArrayBufferLike;
/**
* A JPEG stream reader
*/
export declare class JpegStreamReader {
colorTransform?: boolean;
skipMutation: boolean;
formatAsRGBA: boolean;
tolerantDecoding: boolean;
maxResolutionInMP: number;
maxMemoryUsageInMB: number;
quantizationTables: Int32Array[];
huffmanTablesAC: HuffmanNode[];
huffmanTablesDC: HuffmanNode[];
totalBytesAllocated: number;
maxMemoryUsageBytes: number;
width: number;
height: number;
resetInterval: number;
comments: string[];
adobe: Adobe | null;
jfif: JFIF | null;
exifBuffer: Uint8Array | null;
frames: Frame[];
dctZigZag: Int32Array<ArrayBuffer>;
/**
* @param opts - The user provided options
*/
constructor(opts?: JPEGOptions);
/**
* Increase the max memory usage
* @param increaseAmount - The amount to increase the max memory usage
*/
requestMemoryAllocation(increaseAmount?: number): void;
/**
* Reset the max memory usage
* @param maxMemoryUsageBytes - The new max memory usage
*/
resetMaxMemoryUsage(maxMemoryUsageBytes: number): void;
/**
* Reset the frames
*/
resetFrames(): void;
/**
* Parse the data into the frames
* @param data - The individual block of JPEG data to parse
*/
parse(data: Uint8Array): void;
/**
* Get a result of the frame decoding
* @returns - The result of the frame decoding
*/
getResult(): ParseResult;
/**
* Get the complete image data
* @returns - The image data
*/
getImageData(): Image;
}
/**
* Represents a Huffman tree node where each node can contain either
* a number (leaf) or nested arrays of numbers (internal nodes).
*/
type HuffmanNode = number | HuffmanNode[];
export {};
//# sourceMappingURL=jpeg.d.ts.map