diff --git a/README.md b/README.md index 50b0a945..be2be12b 100755 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ This module is powered by the blazingly fast [libvips](https://github.com/jcupit ### Install libvips on Mac OS - brew install homebrew/science/vips --with-webp + brew install homebrew/science/vips --with-webp --with-graphicsmagick The _gettext_ dependency of _libvips_ [can lead](https://github.com/lovell/sharp/issues/9) to a `library not found for -lintl` error. If so, please try: diff --git a/src/sharp.cc b/src/sharp.cc index c7bca46a..b8409ef4 100755 --- a/src/sharp.cc +++ b/src/sharp.cc @@ -33,7 +33,8 @@ typedef enum { JPEG, PNG, WEBP, - TIFF + TIFF, + MAGICK } ImageType; unsigned char MARKER_JPEG[] = {0xff, 0xd8}; @@ -98,25 +99,30 @@ class ResizeWorker : public NanAsyncWorker { (baton->err).append("Unsupported input buffer"); return; } - } else if (is_jpeg(baton->file_in)) { + } else if (vips_foreign_is_a("jpegload", baton->file_in.c_str())) { if (vips_jpegload((baton->file_in).c_str(), &in, "access", baton->access_method, NULL)) { return resize_error(baton, in); } - } else if (is_png(baton->file_in)) { + } else if (vips_foreign_is_a("pngload", baton->file_in.c_str())) { inputImageType = PNG; if (vips_pngload((baton->file_in).c_str(), &in, "access", baton->access_method, NULL)) { return resize_error(baton, in); } - } else if (is_webp(baton->file_in)) { + } else if (vips_foreign_is_a("webpload", baton->file_in.c_str())) { inputImageType = WEBP; if (vips_webpload((baton->file_in).c_str(), &in, "access", baton->access_method, NULL)) { return resize_error(baton, in); } - } else if (is_tiff(baton->file_in)) { + } else if (vips_foreign_is_a("tiffload", baton->file_in.c_str())) { inputImageType = TIFF; if (vips_tiffload((baton->file_in).c_str(), &in, "access", baton->access_method, NULL)) { return resize_error(baton, in); } + } else if(vips_foreign_is_a("magickload", (baton->file_in).c_str())) { + inputImageType = MAGICK; + if (vips_magickload((baton->file_in).c_str(), &in, "access", baton->access_method, NULL)) { + return resize_error(baton, in); + } } else { resize_error(baton, in); (baton->err).append("Unsupported input file " + baton->file_in);