Open oscarotero opened 2 years ago
https://deno.land/x/imagescript although quite low level
Yes, I tested it but it's very limited. For resizing it only support nearest neighbor interpolation, that produces low quality results (pixelated images).
The v2 looks promising but it will take a while to be released.
See also: https://github.com/lovell/sharp/issues/1476, https://github.com/libvips/libvips/issues/192, https://github.com/kleisauke/wasm-vips/issues/1
TLDR: Sharp uses libvips which uses a lot of native stuff. It's been ported to WebAssembly using Emscripten but not yet stable. I think the best approach would be for Sharp to be compatible with WebAssembly so that it can be used anywhere WASM is supported, not just (but including) Deno, also since the FFI API is not yet stable and would require downloading platform & arch-specific binaries which can get messy...
That's interesting!
FYI, I'm using https://github.com/lumeland/imagemagick-deno, a port to make https://github.com/dlemstra/magick-wasm working with Deno.
As reported in here, this is the current installation experience:
I manually installed Sharp as suggested above, but I am getting the following error on Mac M1. Looks like I will park Deno - Sharp experiments for now.
error: Uncaught Error: Something went wrong installing the "sharp" module
Unable to find napi_register_module_v1 symbol in /Users/xx/Library/Caches/deno/npm/registry.npmjs.org/sharp/0.32.4/build/Release/sharp-darwin-arm64v8.node
Possible solutions:
- Install with verbose logging and look for errors: "npm install --ignore-scripts=false --foreground-scripts --verbose sharp"
- Install for the current darwin-arm64v8 runtime: "npm install --platform=darwin --arch=arm64v8 sharp"
- Consult the installation documentation: https://sharp.pixelplumbing.com/install at Object.
(file:///Users/xx/Library/Caches/deno/npm/registry.npmjs.org/sharp/0.32.4/lib/sharp.js:37:9) at Object. (file:///Users/xx/Library/Caches/deno/npm/registry.npmjs.org/sharp/0.32.4/lib/sharp.js:40:4) at Module._compile (node:module:718:36) at Object.Module._extensions..js (node:module:737:12) at Module.load (node:module:652:34) at Function.Module._load (node:module:534:16) at Module.require (node:module:671:23) at require (node:module:771:20) at Object. (file:///Users/xx/Library/Caches/deno/npm/registry.npmjs.org/sharp/0.32.4/lib/constructor.js:11:1) at Object. (file:///Users/xx/Library/Caches/deno/npm/registry.npmjs.org/sharp/0.32.4/lib/constructor.js:441:4)
For those who hadn't seen, Deno (with --allow-ffi
) support is provided by sharp from v0.33.0 onwards. Every release is now tested against the latest Deno version at that point in time on Linux, macOS and Windows e.g. https://github.com/lovell/sharp/actions/runs/7501251989
Thanks, @lovell. The package works great on Deno!
There's still a minor issue but seems a bug on N-API implementation by Deno: https://github.com/denoland/deno/issues/21686
There's still a minor issue but seems a bug on N-API implementation by Deno: denoland/deno#21686
Actually not so minor as you're stuck with v1.38.5 if using Sharp .toBuffer()
method :)
I miss a good image processing library like sharp: https://github.com/lovell/sharp/issues/2583
There's an alternative based on imagick (https://github.com/lumeland/imagemagick-deno) but it's a bit slow.