我使用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
答案 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中远程保存的,因此无法找到它。