Imagemagick не работает с файлами png

#ruby-on-rails-3 #macos #imagemagick

#ruby-on-rails-3 #macos #imagemagick

Вопрос:

По какой-то причине мой imagemagick не может обрабатывать какие-либо файлы png. Все они жалуются на что-то вроде следующего (может быть легко воспроизведен с помощью identify -format %wx%h afile.png):

 identify: memory allocation failed `afile.png' @ error/png.c/ReadOnePNGImage/2123.
identify: corrupt image `afile.png' @ error/png.c/ReadPNGImage/3668.
  

Файлы Jpeg работают нормально. Но независимо от того, какой файл png я создаю в Photoshop или загружаю из сети, он не будет работать.

Я использую Mac os x 10.5 и imagemagick 6.7.1-0 2011-08-01 Q8

 CONFIGURE     ./configure  '--prefix=/usr/local' '--disable-static' '--with-modules' '--without-perl' '--without-magick-plus-plus' '--with-quantum-depth=8' '--disable-openmp' '--with-gs-font-dir=/usr/local/share/ghostscript/fonts' 'LDFLAGS=-L/usr/local/lib' 'CPPFLAGS=-I/usr/local/include'
CONFIGURE_PATH /usr/local/etc/ImageMagick/
COPYRIGHT     Copyright (C) 1999-2011 ImageMagick Studio LLC
CPPFLAGS      -I/usr/local/include/ImageMagick
CXX           g  
CXXFLAGS      -g -O2 -D_THREAD_SAFE -pthread
DEFS          -DHAVE_CONFIG_H
DELEGATES     bzlib freetype jpeg jng lcms2 png tiff x11 xml zlib
DISTCHECK_CONFIG_FLAGS 'CPPFLAGS=-I/usr/local/include' 'LDFLAGS=-L/usr/local/lib' --disable-deprecated --with-umem=no --with-autotrace=no --with-gslib=no --with-fontpath= --with-gs-font-dir=/usr/local/share/ghostscript/fonts --with-perl=no
DOCUMENTATION_PATH /usr/local/share/doc/ImageMagick-6.7.1/
EXEC-PREFIX   /usr/local
EXECUTABLE_PATH /usr/local/bin
FEATURES      
FILTER_PATH   /usr/local/lib/ImageMagick-6.7.1/modules-Q8/filters
HOST          i386-apple-darwin9.8.0
LDFLAGS       -L/usr/local/lib -L/usr/local/lib -L/usr/X11/lib -R/usr/X11/lib
LIB_VERSION   0x671
LIB_VERSION_NUMBER 6,7,1,0
LIBRARY_PATH  /usr/local/lib/ImageMagick-6.7.1
LIBS          -lMagickCore -llcms2 -ltiff -lfreetype -ljpeg -lXext -lSM -lICE -lX11 -lXt -lbz2 -lz -lm -lpthread 
NAME          ImageMagick
  

Я прогуглил все, но, похоже, не могу разобраться с этим. Я могу изменить настройки в Imagemagick, но я не могу передать параметры в вызовы функций, поскольку я вызываю эту библиотеку через сторонний gem ruby on rails. У кого-нибудь еще была эта проблема?

Ответ №1:

Вам нужно убедиться, что у вас установлены необходимые библиотеки PNG, и создать ImageMagick с включенными этими библиотеками.

Лучшие инструкции по созданию ImageMagick для использования с rmagick (драгоценный камень Ruby on Rails) находятся в исходном коде — http://rmagick.rubyforge.org/install-linux.html

Некоторые дополнительные примечания, снова запустите вашу команду ./configure или проверьте журнал настроек и найдите раздел «Сводка» (он отмечен в документе, на который дана ссылка выше) или просто найдите «ImageMagick настроен следующим образом». Там вы увидите список библиотек, которые он пытается использовать, и какие из них найдены. Вы должны увидеть строку типа:

 PNG               --with-png=yes                yes
  

Если в нем указано —with-png=no или если оно имеет значение «no», то это ваша проблема. Вам необходимо установить библиотеки png. И убедитесь, что вы также установили библиотеки png-devel, поскольку они необходимы для сборки из исходного кода. Теперь, когда вы запускаете ./ configure, он должен обнаружить библиотеки png и включить их в сборку.

Последнее замечание, не описанное в документе, на который дана ссылка выше, заключается в том, что вам может потребоваться включить —disable-openmp в ваши параметры ./ configure, в зависимости от вашего оборудования. И, похоже, вы включили его, так что у вас все должно получиться.