2011-07-04 8 views
3

Djangoでクロップ可能なImageFieldを最適に実装する方法が不思議です。クロップ可能なイメージフィールドを作成する - ウィジェットのデータを保存する方法?

基本的には、画像をアップロードして切り抜きたいと思います。たとえば、私が考えた最初のアプローチは、自分のモデルのImageFieldといくつかのメタフィールドを作成して、選択範囲の幅と高さを保存することでした。 しかし、これを解決し、クロッピングの動作をさらにカプセル化するためのよりクリーンな方法があるのだろうかと思います。

最終的に私はウィジェットで希望の動作をラップしたいと思います。 私が見ている問題はウィジェットが通常は単一のデータベースフィールドにマップされていることです。

これはまったく実行可能で、私のイメージデータを最高の状態に維持するにはどうすればいいでしょうか?

答えて

3

は、私たちは、トリミング画像のための再利用可能なアプリを作成することになりました。オプション1について私が気に入らないのは、私はまだ別のアップロードフィールドを作成しなければならないということです。そして、私は実際にこの機能をできるだけカプセル化して、理想的には自分のCropImageFieldを自分のモデル定義で使用するだけで他のものを設定する必要がないようにしたいと思っています。 1つのフィールドでデータをシリアライズすることは私の心にも当てはまりましたが、もう一度通常のImageFieldの機能のほとんどを維持したいと思います。私が試したこと、これまでに有望なのは、CompositeField(https://bitbucket.org/mp/django-composite-field)を使用することです。
+0

アプリはすばらしく見えます!イメージのサイズを変更してトリミングするようにユーザーに促すことは可能ですか? – Lara

1

これにはいくつかの方法があります。 1つの方法は、クロップされたイメージの名前からクロップされたイメージの名前を推測することです。 ImageFieldがあり、uploads/images/family.jpgという名前の画像がある場合、CropableImageWidgetはクロップされた画像がuploads/images/cropped/family.jpgに保存されているとみなします。

もう1つの方法は、クロップ中に作成したすべてのファイルのシリアライズされた表現を格納する独自のデータベースフィールド型を作成することです。 JSONを介している可能性があります。 django-image-cropping

+0

ねえドナルド、ご提案のための 感謝: – arie

関連する問題