仕事でImageMagickで画像処理をしていたのですが、中間ファイルをいろいろ作る必要があったので、ファイルの掃除も考慮してくれるTempfileを組み合わせて使ってみました。
require 'RMagick'
require 'tempfile'
# アップロードされたファイル
uploaded_file = params[:file]
# TempfileからImageを作成する
# from_blobはArrayを返すので、shiftして先頭の要素を取得
image = Magick::Image.from_blob(File.read(uploaded_file.path)).shift
# 画像フォーマットの確認
puts image.format
# なんかいろんな処理
# Tempfileの作成
tempfile = Tempfile.open(temp_filename)
# Tempfileへの書き込み
# フォーマットの指定が便利
image.write("png:" + tempfile.path)
# なんかいろんな処理
# Tempfileの削除
tempfile.close!