A tiny zero-dependency browser package that extracts dominant color or color palette from an image using WebGPU API with various algorithms.
https://ivanludvig.dev/image-palette-webgpu/
npm i image-palette-webgpu
import { extractDominantColors } from './node_modules/image-palette-webgpu/index.js';
<script type="module">
import { extractDominantColors } from './node_modules/image-palette-webgpu/index.js';
</script>
<script type="importmap">
{
"imports": {
"image-palette-webgpu": "./node_modules/image-palette-webgpu/index.js"
}
}
</script>
import { extractDominantColors } from 'image-palette-webgpu';
<script type="module">
import { extractDominantColors } from 'image-palette-webgpu';
</script>
import { extractDominantColors } from 'image-palette-webgpu';
<script type="module">
import { extractDominantColors } from 'image-palette-webgpu';
</script>
import { extractDominantColors } from 'https://unpkg.com/image-palette-webgpu';
<script type="module">
import { extractDominantColors } from 'https://unpkg.com/image-palette-webgpu';
</script>
import { extractDominantColors } from 'https://esm.sh/image-palette-webgpu';
<script type="module">
import { extractDominantColors } from 'https://esm.sh/image-palette-webgpu';
</script>
import { extractDominantColors } from 'https://cdn.skypack.dev/image-palette-webgpu';
<script type="module">
import { extractDominantColors } from 'https://cdn.skypack.dev/image-palette-webgpu';
</script>
const image = new Image();
image.src = './image.png';
const colorCount = 4;
const algorithm = 'celebi';
await image.decode();
const dominantColors = await extractDominantColors(image, colorCount, algorithm);
console.log(dominantColors); // ['#4285f4', '#db4437', '#f4b400', '#0f9d58']