相关疑难解决方法(0)

未定义的方法裁剪!在轨道3.1.3上使用Carrierwave和MiniMagick

我有一段时间让这个工作,而且仍然是.我会理解它的核心.我正在关注Ryan Bates教程,使用Jcrop和Carrierwave进行裁剪工作.我选择使用MiniMagick,因为即使在我的机器上重新安装ImageMagick和RMagick后,我也会收到一个错误,导致我本地计算机上的rails服务器死机.无论如何切换到MiniMagick修复了我.所以到目前为止,一切都非常好.我生成了不同大小的图像,并且它们已成功上传.但是一旦我尝试裁剪,我就会收到此错误:

undefined method `crop!' for #<MiniMagick::CommandBuilder:0x000001052e4608>
Run Code Online (Sandbox Code Playgroud)

这让我感到困惑,因为我使用的代码与Bates完全相同:

def crop
if model.crop_x.present?
  resize_to_limit(700, 700)
  manipulate! do |img|
    x = model.crop_x.to_i
    y = model.crop_y.to_i
    w = model.crop_w.to_i
    h = model.crop_h.to_i
    img.crop!(x, y, w, h)
  end
 end
end
Run Code Online (Sandbox Code Playgroud)

无论如何,这种作物方法失败了.所以我想,这是一个ImageMagick命令...所以我看了ImageMagick doco,我找不到爆炸的裁剪方法,所以我没试过,然后错误转向:

No such file or directory - /var/folders/dF/dFNM2+Y7FVScn4+OxVHKOU+++TI/-Tmp-/mini_magick20111207-34409-1tnaa07.jpg
Run Code Online (Sandbox Code Playgroud)

无论如何,有些东西对我来说没什么意义,任何帮助都会受到赞赏!谢谢阅读!

ruby-on-rails carrierwave minimagick

17
推荐指数
2
解决办法
8783
查看次数

Carrierwave裁剪

我有一个CarrierWave ImageUploader,可以根据模型中的值(crop_x,crop_y,crop_w和crop_h)创建需要裁剪的原始图像的几个版本.

class ImageUploader < CarrierWave::Uploader::Base

  include CarrierWave::MiniMagick
  ...
  version :t do
    process :cropper
    process :resize_to_fill => [75, 75]
  end
  ...
  def cropper
    manipulate! do |img| 
      img = img.crop "#{model.crop_x}x#{model.crop_y}+#{model.crop_w}+#{model.crop_h}"
      img
    end 
  end

end
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,如果我们没有任何设置,我需要计算一些默认的裁剪值,但我不知道在哪里放置这个逻辑.我尝试将它放在我的Photo模型(上载器安装到)中的before_validation中,但这似乎是在执行了cropper函数之后调用的.我想它要么是在ImageUploader文件中,要么是在创建拇指之前发生的一些回调中.

ruby ruby-on-rails ruby-on-rails-3 carrierwave

3
推荐指数
1
解决办法
5424
查看次数