declare enum Channel { R = 0, G = 1, B = 2 } type Colors = [r: number, g: number, b: number, uses: number]; type Bucket = { colors: Colors[]; total: number; channel: Channel; minR: number; minG: number; minB: number; maxR: number; maxG: number; maxB: number; }; type Options = { strict: boolean; }; /** * @class MedianCut */ export default class MedianCut { imageData: ImageData; options: Options; colors: Colors[]; buckets: Bucket[]; private readonly __bucketsPerStep; static averageColor(colors: Colors[]): [r: number, g: number, b: number]; private get roundingBits(); get palette(): [r: number, g: number, b: number][]; get bucketsPerStep(): [(Bucket[] | undefined)?]; /** * @constructor */ constructor(imageData: ImageData, options?: Options); /** * 減色処理 * @param colorSize 減色する色数 */ reduce(colorSize: number): ImageData; /** * 使用している色数を計算(メモリ節約の為に下位3bitを丸める) */ private calculateColorCount; /** * colorsの合計の使用数と最大範囲のチャンネルを返却 */ private getTotalAnGreatestRangeChannel; /** * 中央値を算出して分割 * @param buckets bucket情報 * @param colorSize 減色後の色数 */ private __mediancut; /** * bucketを生成 * @private */ private generateBucket; } export {};