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
を実行すると例外が発生するため、そのアイデアは無効になります。