UNPKG

@image-tracer-ts/browser

Version:

Platform-specific bindings for image-tracer-ts. Turn images into SVG files in browsers.

46 lines (40 loc) 1.74 kB
import { ImageTracer } from "@image-tracer-ts/core"; import { Options } from "@image-tracer-ts/core"; import { ImageDrawer } from "@image-tracer-ts/core"; import { ImageLoader } from "./image-loader"; export class ImageTracerBrowser extends ImageTracer { public static async fromUrl<OutputType = string>( url: string, options: Partial<Options>, drawer: ImageDrawer<OutputType> | null = null ): Promise<string | OutputType> { const imageData = await ImageLoader.loadUrl(url); return this.fromImageData<OutputType>(imageData, options, drawer); } public static async fromBuffer<OutputType = string>( buffer: ArrayBuffer, options: Partial<Options>, drawer: ImageDrawer<OutputType> | null = null ): Promise<string | OutputType> { const imageData = await ImageLoader.loadImageDataFromBuffer(buffer); return this.fromImageData<OutputType>(imageData, options, drawer); } public static async fromFile<OutputType = string>( file: File, options: Partial<Options>, drawer: ImageDrawer<OutputType> | null = null ): Promise<string | OutputType> { const imageData = await ImageLoader.loadImageDataFromFile(file); return this.fromImageData<OutputType>(imageData, options, drawer); } public static async fromImageData<OutputType = string>( imageData: ImageData, options: Partial<Options>, drawer: ImageDrawer<OutputType> | null = null ): Promise<string | OutputType> { const tracer = new ImageTracerBrowser(options); return drawer ? tracer.traceImage<OutputType>(imageData, drawer) : tracer.traceImageToSvg(imageData); } }