无法使用mini_magick裁剪图像

时间:2012-05-04 11:34:09

标签: minimagick

我使用mini_magick作为利用ImageMagick操作某些图像的界面。 调整大小正常。但是,当我想裁剪一些图像时:

img = MiniMagick::Image.open(url)
img.crop('200x800!')

不断提示No such file

No such file or directory - /var/folders/c4/mqlwdx_d3kj6hqcnvbjr9mn80000gn/T/mini_magick20120504-11111-16kayc1.png

2 个答案:

答案 0 :(得分:30)

啊,我猜错了关键短语。当我搜索minimagick而不是mini_magick时,会找到正确的答案。 Undefined Method crop! Using Carrierwave with MiniMagick on rails 3.1.3尤其是这个答案https://stackoverflow.com/a/9961434/179691

我确实知道关于mini_magick的东西只是mogrify的包装等等。我的问题的原因是-crop仅接受完整格式的几何。所以我把表达式改为:

img.crop('200x800+0+0')

并且有效。

答案 1 :(得分:2)

如果有人使用Carrierwave裁剪并将图片直接上传到Amazon S3,请为我做的正确方法如下:

image_uploader.rb

url=model.remote_image_url 
crop_params="#{w}x#{h}+#{x}+#{y}"
manipulate! do |img|
  img = MiniMagick::Image.open(url)
  img.crop(crop_params)
  img = yield(img) if block_given?
  img
end

我添加img = MiniMagick :: Image.open(url)的原因是因为如果我没有指定自己的图片,则会引发以下错误:

mogrify.im6: geometry does not contain image `/tmp/mini_magick20150811-15523-ac8go1.jpeg'

我认为它是mini_magick尝试查找图像的一些默认临时路径,但由于图像是在S3中远程保存的,因此无法找到它。