UNPKG

image-stylize

Version:

Image Stylize Library is a TypeScript library for image processing and filter effects.

63 lines (52 loc) 2.01 kB
import { TGrayScaleConfig, TSize } from '../types/stylize'; import usePromise from '../utils/usePromise'; /** * @description load grayscale effect * @param params * @returns void * @example * ```ts * Grayscale({ * url: 'https://images.unsplash.com/photo-1622838013147-8b2b2b2b2b2b', * }); */ export const LoadGrayscale = (params: TGrayScaleConfig & TSize): Promise<HTMLCanvasElement> | false => { const [resolve, P] = usePromise<HTMLCanvasElement>(); const { url } = params; // Get the canvas element const canvas = document.createElement('canvas') as HTMLCanvasElement; const context = canvas.getContext('2d'); if (!context) { return false; } // Create an Image object and load the image const image = new Image(); image.src = url; // Replace with your image URL // Perform black and white conversion after the image is loaded image.onload = () => { // Set the Canvas width and height to match the image's dimensions canvas.width = image.width; canvas.height = image.height; // Draw the image onto the Canvas context.drawImage(image, 0, 0, image.width, image.height); // Get the pixel data of the image const imageData = context.getImageData(0, 0, image.width, image.height); const pixels = imageData.data; // Iterate through the pixel data and convert color values to grayscale for (let i = 0; i < pixels.length; i += 4) { const r = pixels[i]; const g = pixels[i + 1]; const b = pixels[i + 2]; // Calculate grayscale value using the common formula: gray = 0.2989 * r + 0.5870 * g + 0.1140 * b const gray = 0.2989 * r + 0.587 * g + 0.114 * b; // Apply the grayscale value to the new pixel, making the image black and white pixels[i] = gray; pixels[i + 1] = gray; pixels[i + 2] = gray; } // Put the processed pixel data back onto the Canvas to display the black and white image context.putImageData(imageData, 0, 0); resolve(canvas); }; return P; };