13

我正在将我的应用程序升级到 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
  • 红宝石 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]

我的 Attachment 类(带有mount_uploader :file, FileUploader)是 、 和其他附件类的父PortraitReferenceLetter。每个附件类都继承自Attachment、 is:polymorphic => truebelongs_to :attachable(User) ,而后者又继承自has_many :portraits:reference_letters:as => :attachable

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

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

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

carrierwave + mini_magick gems = 不是图像错误

我正在使用自制软件。帮助会很棒。谢谢。

4

3 回答 3

17

今天正在与同样的错误作斗争。问题不在 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
于 2012-07-24T06:43:17.507 回答
11

2014 年 2 月

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

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

有效。

于 2014-03-01T16:22:20.927 回答
0

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

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

sudo yum install ImageMagick-devel
于 2017-12-19T08:38:56.170 回答