Skip to content

NoDecodeDelegateForThisImageFormat for ICO #96

@pseudosavant

Description

@pseudosavant

magick-wasm version

0.22

Description

I am trying to use magick-wasm in a use case where I will be downloading/proxying a lot of favicons from the web in a Deno app. They will be in either PNG or legacy ICO/ICON format. Locally installed versions of imagemagick can handle these files fine but I'm having difficulty with magick-wasm.

Two example files:

Version and delegate information:

ImageMagick 7.1.1-11 Q8 x86_64 11ffa6eb4:20230529 https://imagemagick.org
Delegates: freetype heic jng jp2 jpeg jxl lcms lqr openexr png raw tiff webp xml zlib

Both of those files give an error about NoDecodeDelegateForThisImageFormat @ error/blob.c/BlobToImage/460. If I use the magick-image test page, it will load that PNG, but not the ICO.

This is the code I'm using:

import {
  initializeImageMagick,
  ImageMagick,
  Magick,
  Quantum,
  MagickFormat
} from './dist/index.mjs';

const wasm = await Deno.readFile(`./dist/magick.wasm`);
await initializeImageMagick(wasm);
console.log(Magick.imageMagickVersion);
console.log('Delegates:', Magick.delegates);
console.log('Features:', Magick.features);
console.log('Supported Formats:', Magick.supportedFormats);

const iconURL = 'https://pseudosavant.com/homemarks/favicon-1.1.0.ico';
const pngURL = 'https://pseudosavant.com/homemarks/images/favicon-144-1.0.png';
const iconFetch = await fetch(iconURL);
  
if (iconFetch.ok) {
  const iconData = await iconFetch.arrayBuffer();
  console.log(iconData);
  
  await ImageMagick.read(iconData, (img) => {
    console.log(img);
  });
}

Questions:

  1. Am I initializing this wrong?
  2. Do I need to compile magick-wasm with different flags to include PNG and ICO support?

Steps to Reproduce

  1. Use NPM to retrieve dist folder for 0.22
  2. Use Deno code below with the ICO or PNG URLs:
import {
  initializeImageMagick,
  ImageMagick,
  Magick,
  Quantum,
  MagickFormat
} from './dist/index.mjs';

const wasm = await Deno.readFile(`./dist/magick.wasm`);
await initializeImageMagick(wasm);
console.log(Magick.imageMagickVersion);
console.log('Delegates:', Magick.delegates);
console.log('Features:', Magick.features);
console.log('Supported Formats:', Magick.supportedFormats);

const iconURL = 'https://pseudosavant.com/homemarks/favicon-1.1.0.ico';
const pngURL = 'https://pseudosavant.com/homemarks/images/favicon-144-1.0.png';
const iconFetch = await fetch(iconURL);
  
if (iconFetch.ok) {
  const iconData = await iconFetch.arrayBuffer();
  console.log(iconData);
  
  await ImageMagick.read(iconData, (img) => {
    console.log(img);
  });
}

Images

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions