Carrierwave Error Msg:使用MiniMagick操作失败,也许它不是图像?

时间:2012-05-30 05:17:50

标签: ruby-on-rails-3.2 carrierwave ruby-1.9 minimagick

我正在将我的应用程序升级到Ruby 1.9上的Rails 3.2。我不得不放弃attachment_fu。 Carrierwave似乎是明显的替代品。在这个阶段,我将文件上传到文件系统(还没有云文件)。

我在Lion,XCode 4.3.2,安装了命令行工具。运行:

$ brew doctor
# Your system is raring to brew.

我可以在此配置中上传和调整图片大小:

  • rails 3.1.4
  • ruby​​ 1.8.7
  • carrierwave 0.5.8
  • mini_magick 3.4

我可以在新配置中上传图片:

  • rails 3.2.3
  • ruby​​ 1.9.3(或1.9.2)
  • carrierwave 0.6.2

(后跟$ bundle update),但使用mini_magick调整大小会返回以下错误消息:

"File Failed to manipulate with MiniMagick, maybe it is not an image Original Error: MiniMagick::Invalid", where File is the carrierwave uploader.

FileUploader包含:

include CarrierWave::MiniMagick
def store_dir .. end # the shipped default 
process :resize_to_limit => [500, 600]

我的附件类(mount_uploader :file, FileUploader)是PortraitReferenceLetter的父级,以及其他附件类。每个附件类都继承自Attachment:polymorphic => truebelongs_to :attachable(用户),而has_many :portraits:reference_letters等等{ {1}}。

这些都不起作用(从carrierwave的已知问题页面链接):

Why is this RMagick call generating a segmentation fault?

我不想按照此处的建议手动安装ImageMagick:

carrierwave + mini_magick gems = not an image error

我正在使用Homebrew。帮助太棒了。感谢。

3 个答案:

答案 0 :(得分:16)

今天与同样的错误作斗争。问题不在于mini_magick,问题在于你的imagemagick中的 DELEGATES 选项

如果你跑

convert -list configure

你应该有这样的东西

Name          Value
-----------------------------------------------------------------
...
CONFIGURE     ./configure  '--with-bzlib=yes' '--with-fontconfig=yes' '--with-freetype=yes' '--with-gslib=yes' '--with-gvc=yes' '--with-jpeg=yes' '--with-jp2=yes' '--with-png=yes' '--with-tiff=yes' '--disable-shared'
CONFIGURE_PATH /usr/local/etc/ImageMagick/
COPYRIGHT     Copyright (C) 1999-2012 ImageMagick Studio LLC
...
DELEGATES     bzlib djvu fontconfig freetype gvc jpeg jng jp2 lcms lqr openexr png rsvg tiff x11 xml zlib
...
VERSION       6.7.5

但在我的情况下,关键DELEGATES只有xml和zlib值

DELEGATES     xml zlib

解决方案从源安装imagemagick并将params添加到./configure

1. wget http://www.imagemagick.org/download/ImageMagick.tar.gz
2. tar xvfz ImageMagick.tar.gz
3. cd ImageMagick
4. ./configure --with-bzlib=yes --with-fontconfig=yes --with-freetype=yes --with-gslib=yes --with-gvc=yes --with-jpeg=yes --with-jp2=yes --with-png=yes --with-tiff=yes --disable-shared
5. make
6. sudo make install
7. sudo ldconfig /usr/local/lib
8. run again "convert -list configure" and look at changes

您可以在http://www.imagemagick.org/script/advanced-unix-installation.php

找到MacOS的安装说明

更新

由于某些原因,系统可以没有jpeg转换库。要解决此问题,您可以使用apt-get或ppa安装imagemagick以及所有必需的依赖项或尝试安装manualy

sudo apt-get install libjpeg62

在此处查看更多信息https://askubuntu.com/questions/211627/how-to-add-support-for-the-jpeg-image-format

更新2013年1月26日

安装 libpng

点击此链接http://www.libpng.org/pub/png/libpng.html,找到“源代码”块。 复制最新版本的链接

1. wget http://download.sourceforge.net/libpng/libpng-1.5.13.tar.gz
2. tar xvfz libpng-1.5.13.tar.gz 
3. cd libpng-1.5.13/
4 ./configure
5. make
6. sudo make install
7. Rebuild imagemagick

获得 JPEG支持

的另一种方法
1. curl -O http://www.ijg.org/files/jpegsrc.v8c.tar.gz
2. tar zxvf jpegsrc.v8c.tar.gz
3. cd jpeg-8c/
4. ./configure
5. make
6. sudo make install
7. Rebuild imagemagick

答案 1 :(得分:9)

2014年2月

我刚刚遇到这个问题,我很高兴能够从源头上编译ImageMagick,但我想先试试brew update && brew upgrade imagemagick

==> Upgrading 1 outdated package, with result:
imagemagick 6.8.7-7

有效。

答案 2 :(得分:0)

首先确保您的机器具有所需的所有编译器和工具。

sudo yum groupinstall "Development Tools"
sudo yum install rpmdevtool libtool-ltdl-devel

sudo yum install ImageMagick-devel