ness-canvas
Version:
Canvas Builder, Image Filter
152 lines • 4.48 kB
TypeScript
import { Canvas, ImageData } from "canvas";
import { CanvasImage, Edge, ImageChannels, ImageExtention } from "..";
export default class FilterBuilder {
private dataDraft;
private dstImageData;
private context;
private canvas;
private srcPixels;
private srcWidth;
private srcHeight;
private srcLength;
private dstPixels;
private tmpImageData;
private tmpPixels;
private filter;
constructor(image: CanvasImage);
private createImageData;
private clamp;
private buildMap;
private applyMap;
private mapRGB;
private getPixelIndex;
private getPixel;
private getPixelByIndex;
private copyBilinear;
/**
* @param r 0 <= n <= 255
* @param g 0 <= n <= 255
* @param b 0 <= n <= 255
* @return Array(h, s, l)
*/
private rgbToHsl;
/**
* @param h 0.0 <= n <= 1.0
* @param s 0.0 <= n <= 1.0
* @param l 0.0 <= n <= 1.0
* @return Array(r, g, b)
*/
private hslToRgb;
private ConvolutionFilter;
private Clone;
private Copy;
private ColorMatrixFilter;
/**
* @param threshold 0.0 <= n <= 1.0
*/
Binarize(threshold?: number): Promise<ImageData>;
/**
* @param hRadius 1 <= n <= 20
* @param vRadius 1 <= n <= 20
* @param quality 1 <= n <= 10
*/
BoxBlur(hRadius?: number, vRadius?: number, quality?: number): Promise<ImageData>;
/**
* @ param strength 1 <= n <= 4
*/
GaussianBlur(strength?: number): Promise<ImageData>;
/**
* @param radius 1 <= n <= 180
*/
StackBlur(radius?: number): Promise<ImageData>;
/**
* GIMP algorithm modified. pretty close to fireworks
* @param brightness -100 <= n <= 100
* @param contrast -100 <= n <= 100
*/
BrightnessContrastGimp(brightness: number, contrast: number): Promise<ImageData>;
/**
* more like the new photoshop algorithm
* @param brightness -100 <= n <= 100
* @param contrast -100 <= n <= 100
*/
BrightnessContrastPhotoshop(brightness: number, contrast: number): Promise<ImageData>;
/**
* @param channel enum ImageChannels { Red = 1, Green = 2, Bleu = 3 }
*/
Channels(channel: ImageChannels): Promise<ImageData>;
/**
* sets to the average of the highest and lowest contrast
*/
Desaturate(): Promise<ImageData>;
/**
* Floyd-Steinberg algorithm
* @param levels 2 <= n <= 255
*/
Dither(levels: number): Promise<ImageData>;
Edge(): Promise<ImageData>;
Emboss(): Promise<ImageData>;
Enrich(): Promise<ImageData>;
Flip(vertical: boolean): Promise<ImageData>;
/**
* @param gamma 0 <= n <= 3 <= n
*/
Gamma(gamma: number): Promise<ImageData>;
GreyScale(): Promise<ImageData>;
/**
* @param hueDelta -180 <= n <= 180
* @param satDelta -100 <= n <= 100
* @param lightness -100 <= n <= 100
*/
HSLAdjustment(hueDelta: number, satDelta: number, lightness: number): Promise<ImageData>;
Invert(): Promise<ImageData>;
/**
* @param blockSize 1 <= n <= 100
*/
Mosaic(blockSize: number): Promise<ImageData>;
/**
* @param range 1 <= n <= 5
* @param levels 1 <= n <= 256
*/
Oil(range: number, levels: number): Promise<ImageData>;
/**
* @param levels 2 <= n <= 255
*/
Posterize(levels: number): Promise<ImageData>;
Sepia(): Promise<ImageData>;
/**
* @param factor 1 <= n
*/
Sharpen(factor: number): Promise<ImageData>;
Solarize(): Promise<ImageData>;
Transpose(): Promise<ImageData>;
/**
* @param centerX 0.0 <= n <= 1.0
* @param centerY 0.0 <= n <= 1.0
* @param radius
* @param angle(degree)
* @param edge enum Edge { Clamp = 1, Wrap = 2, Transparent = 0 }
* @param smooth
*/
Twril(centerX: number, centerY: number, radius: number, angle: number, edge: Edge, smooth: boolean): Promise<ImageData>;
/**
* Return the canvas after applying the effects
*/
getCanvas(): Canvas;
/**
* Generated image from canvas
* @param location Image Generation Path
* @param name Image name
* @param type Image extention
*/
generatedTo(location: string, name: string, type: ImageExtention): void;
/**
* Return canvas Buffer
*/
toBuffer(): Buffer;
/**
* Returns a base64 encoded string
*/
toDataURL(): string;
}
//# sourceMappingURL=FilterBuilder.d.ts.map