2

A Node.js program is using gm (GraphicsMagick) to do some image manipulation/parsing. While it works locally (on my own machine), it doesn't work on the server.

Relevant output:

Error: Command failed: gm identify: No decode delegate for this image format (that-image.webp).

gm identify: Request did not return an image.

I assume this happens because webp is not supported on the server.

We tried to install libwebp-dev and then --reinstall graphicsmagick, but without any luck:

# apt-get install libwebp-dev
Reading package lists... Done
Building dependency tree       
Reading state information... Done
libwebp-dev is already the newest version.
# apt install --reinstall graphicsmagick
Reading package lists... Done
Building dependency tree       
Reading state information... Done
...
0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 213 not upgraded.
# convert -version
Version: ImageMagick 7.0.7-9 Q16 x86_64 2017-11-24 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC HDRI OpenMP 
Delegates (built-in): bzlib fontconfig freetype jbig jng jp2 jpeg lcms lzma png

tiff webp x xml zlib

gm identify -version

GraphicsMagick 1.3.20 2014-08-16 Q8 http://www.GraphicsMagick.org/ Copyright (C) 2002-2014 GraphicsMagick Group. Additional copyrights and licenses apply to this software. See http://www.GraphicsMagick.org/www/Copyright.html for details.

Feature Support: Native Thread Safe yes Large Files (> 32 bit) yes Large Memory (> 32 bit) yes BZIP yes DPS no FlashPix no FreeType yes Ghostscript (Library) no JBIG yes JPEG-2000 yes JPEG yes Little CMS yes Loadable Modules no OpenMP yes (201307) PNG yes TIFF yes TRIO no UMEM no WebP no WMF yes X11 yes XML yes ZLIB yes

Host type: x86_64-pc-linux-gnu

Configured using the command: ./configure '--build' 'x86_64-linux-gnu' '--enable-shared' '--enable-static' '--enable-libtool-verbose' '--prefix=/usr' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--docdir=${prefix}/share/doc/graphicsmagick' '--with-gs-font-dir=/usr/share/fonts/type1/gsfonts' '--with-x' '--x-includes=/usr/include/X11' '--x-libraries=/usr/lib/X11' '--without-dps' '--without-modules' '--without-frozenpaths' '--with-perl' '--with-perl-options=INSTALLDIRS=vendor' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-Wall -g -fno-strict-aliasing -O2' 'LDFLAGS=' 'CXXFLAGS=-Wall -g -fno-strict-aliasing -O2'

Final Build Parameters: CC = gcc -std=gnu99 CFLAGS = -fopenmp -Wall -g -fno-strict-aliasing -O2 -Wall -pthread CPPFLAGS = -I/usr/include/X11 -I/usr/include/freetype2 -I/usr/include/libxml2 CXX = g++ CXXFLAGS = -Wall -g -fno-strict-aliasing -O2 -pthread LDFLAGS = -L/usr/lib/X11 -L/usr/lib -L/usr/lib LIBS = -ljbig -llcms2 -ltiff -lfreetype -ljasper -ljpeg -lpng12 -lwmflite -lXext -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lz -lm -lgomp -lpthread

My local machine outputs:

$ convert --version
Version: ImageMagick 6.9.7-4 Q16 x86_64 20170114 http://www.imagemagick.org
Copyright: © 1999-2017 ImageMagick Studio LLC
License: http://www.imagemagick.org/script/license.php
Features: Cipher DPC Modules OpenMP 
Delegates (built-in): bzlib djvu fftw fontconfig freetype jbig jng jpeg lcms lqr ltdl lzma openexr pangocairo png tiff wmf x xml zlib

$ gm identify -version GraphicsMagick 1.3.26 2017-07-04 Q16 http://www.GraphicsMagick.org/ Copyright (C) 2002-2017 GraphicsMagick Group. Additional copyrights and licenses apply to this software. See http://www.GraphicsMagick.org/www/Copyright.html for details.

Feature Support: Native Thread Safe yes Large Files (> 32 bit) yes Large Memory (> 32 bit) yes BZIP yes DPS no FlashPix no FreeType yes Ghostscript (Library) no JBIG yes JPEG-2000 no JPEG yes Little CMS yes Loadable Modules no OpenMP yes (201511) PNG yes TIFF yes TRIO no UMEM no WebP yes WMF yes X11 yes XML yes ZLIB yes

Host type: x86_64-pc-linux-gnu

Configured using the command: ./configure '--build' 'x86_64-linux-gnu' '--enable-shared' '--enable-static' '--enable-libtool-verbose' '--prefix=/usr' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--docdir=${prefix}/share/doc/graphicsmagick' '--with-gs-font-dir=/usr/share/fonts/type1/gsfonts' '--with-x' '--x-includes=/usr/include/X11' '--x-libraries=/usr/lib/X11' '--without-dps' '--without-modules' '--without-frozenpaths' '--with-webp' '--with-perl' '--with-perl-options=INSTALLDIRS=vendor' '--enable-quantum-library-names' '--with-quantum-depth=16' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-Wall -g -fno-strict-aliasing -O2' 'LDFLAGS=' 'CXXFLAGS=-Wall -g -fno-strict-aliasing -O2'

Final Build Parameters: CC = gcc CFLAGS = -fopenmp -Wall -g -fno-strict-aliasing -O2 -Wall -pthread CPPFLAGS = -I/usr/include/X11 -I/usr/include/freetype2 -I/usr/include/libxml2 CXX = g++ CXXFLAGS = -Wall -g -fno-strict-aliasing -O2 -pthread LDFLAGS = -L/usr/lib/X11 LIBS = -ljbig -lwebp -llcms2 -ltiff -lfreetype -ljpeg -lpng16 -lwmflite -lXext -lSM -lICE -lX11 -llzma -lbz2 -lxml2 -lz -lm -lgomp -lpthread

The first thing I see is that the server has ImageMagick installed as well. However, it seems that gm identify fails, not convert.

I'm not sure how to solve this. How can we add webp support to GraphicsMagick? Should we get rid of ImageMagick?

  • Have you tried compiling it yourself? The output of your server shows that it was compiled without the '--with-webp' option, while your local machine shows it was run with '--with-webp'. – terdon Feb 14 '18 at 14:45
  • @terdon I see that as ultimate solution. I did try apt source ..., as mentioned in one of the answers from the linked question, but that failed with some error and then I gave up on compilation. Would be nice to have a set of clear steps to follow for compilation. – Ionică Bizău Feb 14 '18 at 14:52

0 Answers0