thumbo-core

Dead fast thumbnail library for browser and NodeJs

Usage no npm install needed!

<script type="module">
  import thumboCore from 'https://cdn.skypack.dev/thumbo-core';
</script>

README

thumbo-core

๐Ÿ˜ฑ Dead fast thumbnail library for browser and NodeJs

Build & Test

Built with Rust ๐Ÿฆ€ & WebAssembly ๐Ÿ•ธ

๐Ÿ“– About

thumbo-core is a thubnail library for browsers and NodeJs, built with Rust and WebAssembly in other to achieve closer to native speed!

It supports thumbnail generation for Png, Jpeg, Gif, Ico, Webp and Svg! Webp support is a work in progress.

๐Ÿ“ฃ If you plan to use thumbo-core, it should be used with a Webworker so you don't block the main thread! If you don't want to go through this hassle, use thumbo, it provides a worker pool to handle thumbnail generation using thumbo-core out of the box.

๐Ÿšด Usage

๐Ÿงช Sample usage

import * as thumbo from "thumbo-core";

const img = await fetch("/path/to/img.png");

const thumbnail = thumbo.thumbnail(
  new Uint8Array(await img.arrayBuffer()),
  thumbo.ImageFormat.Png,
  20,
  20
);

const thumbnail_blob = new Blob([thumbnail], { type: "image/png" });
const url = URL.createObjectURL(thumbnail_blob);

document.getElementById("img").src = url;

โš™๏ธ API Reference

thumbo.ImageFormat

An enum of image formats supported by thumbo-core.

thumbo.thumbnail(image_buffer: Uint8Array, format: thumbo.ImageFormat, width, height)

Creates a thumbnail from the provided image buffer.

๐Ÿ‘ท๐Ÿฝ Development

๐Ÿ› ๏ธ Build with wasm-pack build

wasm-pack build

๐Ÿ”ฌ Test in Headless Browsers with wasm-pack test

wasm-pack test --headless --chrome

๐ŸŽ Publish to NPM with wasm-pack publish

wasm-pack publish