3

Paperclip を使用して画像を処理するモデルがあります。画像がアップロードされると、JavaScript トリミングのプレビューが作成され、選択したトリミングからサムネイルとプレビュー サイズが作成されます。S3 で合計 3 つの画像を取得します。

  • 元の画像
  • プレビュー (ユーザーが選択したトリミングから)
  • 親指 (ユーザーが選択したトリミングから)

添付ファイルのモデルのコードは次のとおりです。

has_attached_file :picture, ASSET_INFO.merge(
  :whiny => false,
  :styles       => { :thumb => '200>x200#', :preview => '400x300>' },
  :processors   => [:jcropper],
  :preserve_files => true
)

ユーザーが独自の目的でオブジェクトのコピーを作成できる機能があり、画像をコピーしたいと考えています。私は単純なことをするだけだと思った

new_my_model.picture = original_my_model.picture if original_my_model.picture_file_name #no file name means no picture

仕事を終わらせるでしょう、そしてそれはしますが、ほんの少しだけです。

写真をコピーしてから、モデルの設定に基づいてプレビューとサムネイルを再処理しています。

代わりに、既存の 3 つの画像 (オリジナル、サム、プレビュー) を元のオブジェクトと同じように新しいオブジェクトにコピーし、サイズ変更/トリミングをスキップして、S3 の適切な場所に保存します。

誰かが私を正しい方向に向けることができますか? 私はオンラインで検索しましたが、何も見つからないようで、私が試したすべてがうまくいかないようです. 元の画像でa.dupを実行すると例外が発生するため、そのアイデアは無効になります。

4

1 に答える 1