【问题标题】:Carrierwave Error Msg: Failed to manipulate with MiniMagick, maybe it is not an image?Carrierwave 错误消息:无法使用 MiniMagick 进行操作,可能不是图像?
【发布时间】:2012-06-04 08:07:03
【问题描述】:

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

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

$ brew doctor
# Your system is raring to brew.

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

  • 导轨 3.1.4
  • 红宝石 1.8.7
  • 载波0.5.8
  • mini_magick 3.4

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

  • 导轨 3.2.3
  • ruby 1.9.3(或 1.9.2)
  • 载波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:as => :attachable

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

Why is this RMagick call generating a segmentation fault?

我不想按照这里的建议手动安装 ImageMagick:

carrierwave + mini_magick gems = not an image error

我正在使用 Homebrew。帮助会很棒。谢谢。

【问题讨论】:

  • 我得到了它的工作,但忘记在这里发布解决方案。我相信我的问题是名称冲突。我的文件上传器被称为 FileUploader。用 AttachmentUploader 替换它修复了(或者我认为)问题:“文件无法使用 MiniMagick 操作,也许它不是图像?原始错误:MiniMagick::Invalid”不幸的是,我现在不是 100% 确定,它已经一年前。如果有人使用名为 FileUploader 的上传器遇到此问题并使用其他名称的上传器修复它,请在此处确认。

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


【解决方案1】:

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

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

sudo yum install ImageMagick-devel

【讨论】:

    【解决方案2】:

    2014 年 2 月

    我刚遇到这个问题,很高兴能花一天时间从源代码编译 ImageMagick,但我想我会先尝试brew update && brew upgrade imagemagick

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

    成功了。

    【讨论】:

    • 更简单的解决方案
    【解决方案3】:

    今天正在与同样的错误作斗争。问题不在于 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 并将参数添加到 ./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

    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
    

    【讨论】:

    • 谢谢谢谢!得到了同样模糊的“无法操纵......”错误并且无法弄清楚几个小时。我使用自制软件(我在 Mac 上)安装了 ImageMagick,你是从源代码安装的解决方案,这些选项就像一个魅力。谢谢!!
    • 感谢 Ivan 提供详细的手动安装。但我想让它全部与通过 Homebrew 安装的 ImageMagick 一起工作,而不是手动安装。我确实做到了,MiniMagick 没有错误消息。快一年前了,我忘记在这里贴解决方案,也没有在我的git日志中做相关的注释。我最好的猜测:我相信问题是名称冲突。请参阅我对上面我自己的问题的评论。
    • 我已经按照这些说明在 brew 安装的 IM 上从源代码重建了 ImageMagick(需要添加 JPEG 支持),一切正常。 @Arta 我认为您应该将这个非常好的答案标记为已接受。
    • 感谢您的精彩回答!完美运行。
    • sudo apt-get install libjpeg62 为我工作,谢谢。
    猜你喜欢
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多