9

私は、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
4

2 に答える 2

32

ああ、間違ったキーフレーズで検索していたと思います。minimagickの代わりに検索すると、正しい答えが返ってきますmini_magick未定義のメソッドクロップ!Rails 3.1.3でMiniMagickでCarrierwaveを使用する、特にこの回答https://stackoverflow.com/a/9961434/179691

mini_magickに関するものは単なるラッピングなどであることを私は知っていましたmogrify。私の問題の原因は、-crop完全にフォーマットされたジオメトリのみを受け入れることです。そこで、式を次のように変更しました。

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

そしてそれはうまくいきます。

于 2012-05-04T12:07:54.370 に答える
2

誰かがCarrierwaveを使用して画像をトリミングしてAmazonS3に直接アップロードしている場合に備えて、正しい方法は次のとおりです。

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 に答える