現在、ユーザーからいくつかの写真を取得して新しい写真を返すSinatraアプリを作成しています。
hamlフォームの一部があります:
%input{type:'file', name:'user_image'}
そしてハンドラーからのコードがあります:(モンタージュは別の写真です)
source_userpic = params[:user_image][:tempfile]
blob = File.open(source_userpic).read
userpic = ImageList.new
userpic.from_blob(blob)
resized_img = userpic.scale(montage.columns,
montage.rows)
resized_img.opacity = MaxRGB/3
次に、2つの画像がコンポジットで「レイヤー化」されて保存されます(必要ありません)
final_picture = ImageList.new
final_picture << montage.composite(resized_img, 0, 0, OverCompositeOp)
final_picture.write("./public/uploads/#{DateTime.now}.jpg" # dirty (for example)
次に、ajaxでfinal_pictureを表示する必要があります。2つの明らかな問題があります。1つはfinal_pictureを保存する必要がないことです。2つ目はプレビューだけです。次に、ファイル名の競合を回避するためのコードを作成する必要があります。
表示するfinal_pictureを送信するにはどうすればよいですか?to_blobメソッド?しかし、次は何ですか?