9

我使用 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
4

2 回答 2

32

啊,我猜我在搜索错误的关键词。当我搜索minimagick而不是mini_magick. 未定义的方法裁剪!在 Rails 3.1.3 上使用 Carrierwave 和 MiniMagick,尤其是这个答案https://stackoverflow.com/a/9961434/179691

我确实知道有关 mini_magick 的东西只是一个包装mogrify等等。我的问题的原因是-crop只接受完整格式的几何图形。所以我将表达式更改为:

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

那行得通。

于 2012-05-04T12:07:54.370 回答
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 中,因此无法找到它。

于 2015-08-11T23:08:47.400 回答