Carrierwave错误消息:无法使用MiniMagick进行操作,可能不是图像?

13
我正在将我的应用程序升级到Rails 3.2和Ruby 1.9。我必须放弃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 => true,并且belongs_to :attachable(用户),反过来,attachablehas_many :portraits:reference_letters等。

这些方法都没有起作用(链接自carrierwave的已知问题页面):

为什么这个RMagick调用会生成分段错误?

我不想像这里建议的那样手动安装ImageMagick:

carrierwave+mini_magick宝石=不是图像错误

我正在使用Homebrew。帮助将非常棒。谢谢。


我已经解决了问题,但是忘记在这里发布解决方案了。我认为我的问题是名称冲突。我的文件上传器被称为FileUploader。将其替换为AttachmentUploader修复了(或者我认为修复了)问题:“File Failed to manipulate with MiniMagick,maybe it is not an image? Original Error: MiniMagick::Invalid”不幸的是,现在我不确定百分之百,因为这是一年前的事情了。如果有人遇到这个问题,并用不同的上传器修复了名为FileUploader的上传器,请在此确认。 - Arta
3个回答

18

今天也遇到了同样的错误。问题不在于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

solution was是安装imagemagick源代码并添加参数到./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

您可以在此处找到MacOS的安装说明:http://www.imagemagick.org/script/advanced-unix-installation.php

更新

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

sudo apt-get install libjpeg62

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

更新于01/26/2013

安装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

非常感谢!我一直遇到同样晦涩难懂的“无法操作…”错误,花了几个小时也没能解决。我使用Homebrew(我在Mac上)安装了ImageMagick,而你提供的从源代码安装的解决方案完美地解决了我的问题。非常感谢!! - BFree
感谢Ivan提供详细的手动安装说明。但是我想要通过Homebrew安装ImageMagick并使其正常工作,而不是手动安装。我已经让它工作了,MiniMagick没有出现任何错误信息。这已经快一年了,我忘记在这里发布解决方案,也没有在我的git日志中做出相关的注释。我最好的猜测是:我认为问题是名称冲突。请参见我在上面对自己问题的评论。 - Arta
我按照这些说明从源代码重新构建了ImageMagick,覆盖了由brew安装的IM(需要添加JPEG支持),一切正常。@Arta我认为您应该将这个非常好的答案标记为已接受。 - maksimov
非常感谢您提供这个惊人的答案!完美地解决了我的问题。 - Michelle
1
sudo apt-get install libjpeg62 对我有用,谢谢。 - Thomas Klemm

11

2014年2月

我刚遇到这个问题,本来兴冲冲地打算花一整天的时间从源代码编译ImageMagick,但想着先试试brew update && brew upgrade imagemagick

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

它起作用了。


更简单的解决方案 - abhishek77in

0

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

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

sudo yum install ImageMagick-devel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接