3

私はシナトラRMagickを使って非常に簡単なことをしようとしています。

  1. 簡単なフォームファイルのアップロードで画像を撮る
  2. RMagickを使用してサイズを変更します
  3. 次に、永続性のためにデータベースに保存します(無関係)

しかし、RDocsと無限のヘッドバンギングテストを行った後、フォームイメージをRMagickオブジェクトにきれいに取得できないようです。

これは私のために現在働いている恐ろしいことです:

def image_resize(img_data)
    filecount = rand
    writer = File.new("/tmp/#{filecount}.jpg", "w")
    writer.puts(img_data)
    writer.close

    resized_image = Magick::ImageList.new("/tmp/#{filecount}.jpg").first
    resized_image.crop_resized!(100,100, Magick::NorthGravity)
    resized.format = 'jpeg'
    resized_image.to_blob
end

#call the method with my form image data
image_resize(params[:image][:tempfile].read)

では、どうすれば明らかな正しいことを行い、ディスクの書き込みと読み取りを行わずに、フォームイメージデータをRMagickオブジェクトに直接貼り付けることができます。

Magick :: ImageとImageListsでさまざまな読み方を試しましたが、エラーが大量に発生しました。


あらゆる方向性をありがとう

-1.2。

4

2 に答える 2

3

一時ファイルからパスを取得し、それをMagick::Imageに渡す必要がありますread

次に例を示します。

post "/upload-photo" do
  image = Magick::Image.read(params[:image][:tempfile].path)[0]
  image.crop_resized! 100, 100, Magick::CenterGravity
  store_image_data image.to_blob

  redirect "/done"
end
于 2010-08-27T02:18:01.843 に答える
0

または、次のようにActionDispatch :: Http::UploadedFileから直接読み取ることができます。

image = Magick::Image.from_blob(params[:image].read)
于 2015-07-14T23:50:22.903 に答える