使用mini_magick在Rails应用程序

时间:2017-05-01 22:28:31

标签: ruby-on-rails imagemagick carrierwave minimagick

我在Windows 8.1上。经过5个小时,我终于在我的rails应用程序中设置了CarrierWave。我必须安装 ImageMagick (运行convert -version返回“Version:ImageMagick 6.9.8-4 Q16 x64 2017-04-25”,所以我知道它已安装)。上传文件按预期工作,一切正常。

下一步是包含mini_magick所以我可以调整大小并制作图像的缩略图版本,因此我从image_uploader.rb文件中取消注释了以下几行:

  include CarrierWave::MiniMagick

   version :thumb do
     process :resize_to_fit => [200, 100]
   end

然后我将mini_magick添加到我的gemfile中并确认它在那里(运行bundle install返回“Using mini_magick 4.7.0”)。但是现在,每当我上传文件时,都会收到以下错误:

  • 图片无法使用MiniMagick操作,也许它不是图像?原始错误:未安装ImageMagick / GraphicsMagick

现在我知道它是一个图像,因为它在我尝试使用MiniMagick进行操作之前使用了相同的文件。 ImageMagick绝对安装。我找不到关于我的问题的单一参考。我做错了什么?

提前谢谢。

编辑:运行convert -version列出代理(内置),如下所示:

  

代表(内置):bzlib cairo flif freetype jng jp2 jpeg lcms lqr   openexr pa ngocairo png ps rsvg tiff webp xml zlib

我没有在该列表中看到jpg。但即使尝试上传.png文件,我也收到同样的错误。

1 个答案:

答案 0 :(得分:1)

在几天没做任何事情后,我从头开始重新启动this guide。当我进入不同大小的图像处理阶段时,我从uploader.rb取消注释了以下代码,并添加了指南中随意提到的require语句(我第一次跳过了)。

from abc import ABCMeta

class BaseCrawler(object):  # CHANGED BASE CLASS
    __metaclass__ = ABCMeta    # ADDED

    def __init__(self, search_key='', **kwargs):
        if type(search_key) == str:
            if search_key == '':
                search_key = 'Kabe'
            self.g_search_key_list = [search_key]

class GoogleCrawler(BaseCrawler):
    def __init__(self, search_key='', **kwargs):
        # FOLLOWING LINE CHANGED TO SUPPLY NEEDED ARGS TO super()
        super(GoogleCrawler, self).__init__(search_key, **kwargs)

        # google search specific url parameters
        self.search_url_prefix = kwargs.get('search_url_prefix', 'https://www.google.com.sg/search?q=')
        self.search_url_postfix = kwargs.get('search_url_postfix','&source=lnms&tbm=isch&sa=X&ei=0eZEVbj3IJG5uATalICQAQ&ved=0CAcQ_AUoAQ&biw=939&bih=591')

        # show more options
        # options : 'id','class'
        self.show_more_find_type = kwargs.get('show_more_find_type', 'id')
        self.show_more_find_value = kwargs.get('show_more_find_value', 'smb')

if __name__ == '__main__':
    GoogleCrawler('foods')

运行bundle install并继续完成本教程的其余部分,并根据需要调整图像大小。