ruby-on-rails – 未定义的方法裁剪!在导轨上使用带有MiniMagick的Carrierwave 3.1.3

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 未定义的方法裁剪!在导轨上使用带有MiniMagick的Carrierwave 3.1.3前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个时间让这个工作,但仍然是.我会得到它的核心.我正在关注Ryan Bates教程,使用Jcrop和Carrierwave进行裁剪.我选择使用MiniMagick,因为即使重新安装ImageMagick和RMagick在我的机器上,我得到一个错误,杀死我的本地机器上的rails服务器.无论如何切换到MiniMagick固定为我.
所以一切都很好,直到这一点.我有不同大小的图像被制作,并且正在上传成功.
但是一旦我尝试裁剪我得到这个错误
undefined method `crop!' for #<MiniMagick::CommandBuilder:0x000001052e4608>

这是令我困惑的是,因为我使用的是与贝茨完全相同的代码

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

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

No such file or directory - /var/folders/dF/dFNM2+Y7FVScn4+OxVHKOU+++TI/-Tmp-/mini_magick20111207-34409-1tnaa07.jpg

无论如何,有些东西对我来说并没有什么意义,任何帮助将不胜感激!
谢谢阅读!

解决方法

有同样的问题,我的解决方案是这种方法
def cropped_image(params)
    image = MiniMagick::Image.open(self.image.path)
    crop_params = "#{params[:w]}x#{params[:h]}+#{params[:x]}+#{params[:y]}"
    image.crop(crop_params)

    image
end

只需修改我的方法为您的情况.关键在于哪种格式将变量传递给crop方法,希望这有助于您.

猜你在找的Ruby相关文章