#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, в зависимости от вашего оборудования. И, похоже, вы включили его, так что у вас все должно получиться.