I'm trying to load an image in Octave 4.2.1 with GraphicsMagick 1.3.27 (via brew) on OS X. Here's the error:
>> img = imread('./myimg.jpg')
error: Magick++ exception: octave-cli-4.2: No decode delegate for this
image format (<path to myimg.jpg>) reported by magick/constitute.c:1535 (ReadImage)
error: called from
__imread__ at line 80 column 10
imageIO at line 117 column 26
imread at line 106 column 30
GraphicsMagick looks to be configured correctly:
gm -version
GraphicsMagick 1.3.27 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 no
JPEG-2000 no
JPEG yes
Little CMS no
Loadable Modules yes
OpenMP no
PNG yes
TIFF yes
TRIO no
UMEM no
WebP no
WMF no
X11 no
XML no
ZLIB yes
Host type: x86_64-apple-darwin16.7.0
Configured using the command:
./configure '--prefix=/usr/local/Cellar/graphicsmagick/1.3.27' '--
disable-dependency-tracking' '--enable-shared' '--disable-static' '--with-modules' '--without-lzma' '--disable-openmp' '--with-quantum-depth=16' '--disable-installed' '--without-gslib' '--with-gs-font-dir=/usr/local/share/ghostscript/fonts' '--without-x' '--without-lcms2' 'CC=clang' 'CXX=clang++'
Final Build Parameters:
CC = clang
CFLAGS = -g -O2 -Wall -D_THREAD_SAFE
CPPFLAGS = -I/usr/local/opt/freetype/include/freetype2
CXX = clang++
CXXFLAGS = -D_THREAD_SAFE
LDFLAGS = -L/usr/local/opt/freetype/lib
LIBS = -lfreetype -lbz2 -lz -lltdl -lm -lpthread
Trying to load a png file results in the same error. Using gm
directly from the command line works fine.
Your octave and gm installation may be linked against different GraphicsMagick libraries so the output of gm -version
might not be accurate. You probably should be checking this from inside Octave itself, like so:
octave:1> imformats
Extension | isa | Info | Read | Write | Alpha | Description
----------+-----+------+------+-------+-------+------------
bmp | yes | yes | yes | yes | yes | Microsoft Windows bitmap image
cur | yes | yes | yes | no | yes | Microsoft Cursor Icon
gif | yes | yes | yes | yes | yes | CompuServe graphics interchange format
ico | yes | yes | yes | no | yes | Microsoft Icon
jbg | yes | yes | yes | yes | yes | Joint Bi-level Image experts Group interchange format
jbig | yes | yes | yes | yes | yes | Joint Bi-level Image experts Group interchange format
jpg, jpeg | yes | yes | yes | yes | yes | Joint Photographic Experts Group JFIF format
pbm | yes | yes | yes | yes | yes | Portable bitmap format (black/white)
pcx | yes | yes | yes | yes | yes | ZSoft IBM PC Paintbrush
pgm | yes | yes | yes | yes | yes | Portable graymap format (gray scale)
png | yes | yes | yes | yes | yes | Portable Network Graphics
pnm | yes | yes | yes | yes | yes | Portable anymap
ppm | yes | yes | yes | yes | yes | Portable pixmap format (color)
ras | yes | yes | yes | yes | yes | SUN Rasterfile
tga, tpic | yes | yes | yes | yes | yes | Truevision Targa image
tif, tiff | yes | yes | yes | yes | yes | Tagged Image File Format
xbm | yes | yes | yes | yes | yes | X Windows system bitmap (black/white)
xpm | yes | yes | yes | yes | yes | X Windows system pixmap (color)
xwd | yes | yes | yes | yes | yes | X Windows system window dump (color)
You can also check what library is Octave actually using with ldd
(since your are using Mac, you might not have ldd
but google tells me otool -L
is the Mac solution). In my case I know they are the same:
$ ldd /usr/local/lib/octave/5.0.0/liboctinterp.so | grep Magick
libGraphicsMagick++-Q16.so.12 => /lib/libGraphicsMagick++-Q16.so.12 (0x00007f858a896000)
libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f858a52e000)
$ ldd /usr/bin/gm | grep Magick
libGraphicsMagick-Q16.so.3 => /lib/libGraphicsMagick-Q16.so.3 (0x00007f5041f66000)
And once you know the actual library that Octave is using for GraphicsMagick, you can check if that one is linked against libjpeg:
$ ldd /lib/libGraphicsMagick++-Q16.so.12 | grep jpeg
libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f63e910c000)
You may also be able to get some hints from octave config:
octave:1> __octave_config_info__.build_environment.MAGICK_CPPFLAGS
ans = -I/usr/include/GraphicsMagick
octave:2> __octave_config_info__.build_environment.MAGICK_LDFLAGS
ans =
octave:3> __octave_config_info__.build_environment.MAGICK_LIBS
ans = -lGraphicsMagick++ -lGraphicsMagick