Octave не может прочитать файл с помощью GraphicsMagick - PullRequest
0 голосов
/ 21 октября 2018

Я пытаюсь загрузить изображение в Octave 4.2.1 с помощью GraphicsMagick 1.3.27 (через brew) на OS X. Вот ошибка:

>> 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 выглядит правильно настроенным:

 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

Попытка загрузить png-файл приводит к той же ошибке.Использование gm непосредственно из командной строки работает нормально.

1 Ответ

0 голосов
/ 22 октября 2018

Ваша установка octave и gm может быть связана с разными библиотеками GraphicsMagick, поэтому вывод gm -version может быть неточным.Вы, вероятно, должны проверить это из самой Octave, например:

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)

Вы также можете проверить, какую библиотеку Octave использует на самом деле с ldd (так как вы используете Mac, у вас может не быть ldd но Google говорит мне otool -L это решение для Mac).В моем случае я знаю, что они одинаковы:

$ 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)

И как только вы узнаете фактическую библиотеку, которую Octave использует для GraphicsMagick, вы можете проверить, связана ли она с libjpeg:

$ ldd /lib/libGraphicsMagick++-Q16.so.12 | grep jpeg
    libjpeg.so.62 => /lib/x86_64-linux-gnu/libjpeg.so.62 (0x00007f63e910c000)

Вы также можете получить некоторые подсказки из конфигурации октав:

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
...