【问题标题】:Undefined method manipulate! - carrierwave with minimagick未定义的方法操作! - 带有 minimagick 的载波
【发布时间】:2015-09-20 20:53:34
【问题描述】:

我正在使用带有 minimagick 的载波来上传图像并将其裁剪为正方形。但是我收到以下错误:

undefined method 'manipulate!' for #<Class:0x692db10>

这似乎没有意义,因为我已经包含了正确的类,并且该部分工作正常。这是我当前的上传器类。

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick

  @@sizes = {
    "2000" => 2048,
    "1500" => 1500,
    "1000" => 1024,
    "500" => 512,
    "250" => 256,
    "100" => 128
  }

  storage :file

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  version :square do
    manipulate! do |img|
      size = img.dimensions.min
    end
    process resize_to_fill: [size, size]
  end
end

要清楚,我们谈论的是:square 版本。有谁知道可能出了什么问题?

【问题讨论】:

    标签: ruby-on-rails carrierwave minimagick


    【解决方案1】:

    似乎manipulate! 属于RMagick adapter,对于MiniMagick,你应该使用mogrify 之类的东西。

    确实有这样的方法,但你试图在类范围内使用它,而它是一个实例方法。您已经可以使用bunch of useful class methods

    如果您仍然需要manipulate!,请执行以下操作:

    process :radial_blur => 10
    
    def radial_blur(amount)
      manipulate! do |img|
        img.radial_blur(amount)
        img = yield(img) if block_given?
        img
      end
    end
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-26
    • 1970-01-01
    • 1970-01-01
    • 2014-01-30
    • 2011-11-21
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多