diff options
| author | Sophie Zhang <sophie_zhang@brown.edu> | 2023-11-16 01:14:46 -0500 |
|---|---|---|
| committer | Sophie Zhang <sophie_zhang@brown.edu> | 2023-11-16 01:14:46 -0500 |
| commit | 953627770c09cbb6918a0816f4e5974bb57044e1 (patch) | |
| tree | c995a11e68f43262872ab80fcda6ca542456a6ad /src/client/views/ExtractColors.ts | |
| parent | 8fccdb8c21015eb9204de7c24a80ece82f338d8e (diff) | |
palette, extracting image colors
Diffstat (limited to 'src/client/views/ExtractColors.ts')
| -rw-r--r-- | src/client/views/ExtractColors.ts | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/src/client/views/ExtractColors.ts b/src/client/views/ExtractColors.ts new file mode 100644 index 000000000..f78d9a355 --- /dev/null +++ b/src/client/views/ExtractColors.ts @@ -0,0 +1,57 @@ +import { extractColors } from 'extract-colors'; + +// Manages image color extraction +export class ExtractColors { + // loads all images into img elements + static loadImages = async (imageFiles: File[]): Promise<HTMLImageElement[]> => { + try { + const imageElements = await Promise.all(imageFiles.map(file => this.loadImage(file))); + return imageElements; + } catch (error) { + console.error(error); + return []; + } + }; + + // loads a single img into an img element + static loadImage = (file: File): Promise<HTMLImageElement> => { + return new Promise((resolve, reject) => { + const img = new Image(); + + img.onload = () => resolve(img); + img.onerror = error => reject(error); + + const url = URL.createObjectURL(file); + img.src = url; + }); + }; + + // loads all images into img elements + static loadImagesUrl = async (imageUrls: string[]): Promise<HTMLImageElement[]> => { + try { + const imageElements = await Promise.all(imageUrls.map(url => this.loadImageUrl(url))); + return imageElements; + } catch (error) { + console.error(error); + return []; + } + }; + + // loads a single img into an img element + static loadImageUrl = (url: string): Promise<HTMLImageElement> => { + return new Promise((resolve, reject) => { + const img = new Image(); + + img.onload = () => resolve(img); + img.onerror = error => reject(error); + + img.src = url; + }); + }; + + // extracts a list of collors from an img element + static getImgColors = async (img: HTMLImageElement) => { + const colors = await extractColors(img, { distance: 0.35 }); + return colors; + }; +} |
