2012-05-04 115 views
8

我正在使用mini_magick作为利用ImageMagick操纵某些图像的界面。 调整大小工作正常。但是,当我要进行一些裁剪图像:无法使用mini_magick裁剪图像

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 

回答

30

啊,我是用错了关键的一句我想搜索。当我搜索minimagick而不是mini_magick时,正确的答案来了。 特别是这个答案https://stackoverflow.com/a/9961434/179691

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

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

和那个作品。

+0

也适用于jekyll-minimagick和retinamagick! ''crop:“640x480 + 0 + 0”''' – malcolm

1

只是在是否有人使用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 

我之所以“M加入IMG = MiniMagick :: Image.open(URL)是因为如果我不指定我自己的形象,这会让我下面的错误:

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

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