2011-07-04 53 views
3

我想知道如何在Django中最好地實現裁剪的ImageField。創建裁剪圖像字段 - 如何存儲小部件的數據?

基本上我想上傳圖片並裁剪它們。例如使用imagAreaSelect

我想到的第一種方法是在我的模型上創建一個ImageField和一些元字段來存儲我選擇的作物比例,寬度和高度。 但我不知道是否有更清晰的方法來解決這個問題,並進一步封裝種植行爲。

因此,最終我想在小部件中包裝所需的行爲。 雖然我看到的問題是小部件通常映射到單個數據庫字段。

所以我想知道這是否可行,以及如何最好地堅持我的圖像數據?

回答

3

我們結束了創建用於裁剪圖像的可重複使用的應用程序:django-image-cropping

+0

該應用看起來很棒!是否有可能提示用戶調整大小和裁剪圖像? – Lara

1

有幾種方法可以做到這一點。一種方法是從未裁剪圖像的名稱推斷裁剪圖像的名稱。因此,如果您有一個ImageField,並且有一個名爲uploads/images/family.jpg的圖像,則您的CropableImageWidget可能會假定裁剪的圖像存儲在uploads/images/cropped/family.jpg中。

另一種方法是製作自己的數據庫字段類型,用於存儲剪切時創建的所有文件的序列化表示形式。可以通過JSON。

+0

嘿 - 唐納德, 感謝您的建議。我不喜歡選項1的原因是我仍然需要創建一個單獨的上傳字段。而且我真的很喜歡這個功能被封裝爲可能,所以理想情況下我只需要在我的模型定義中使用我的CropImageField,而不必設置其他的東西。 爲了在單個字段中序列化數據也出現在我的腦海裏,但是我又想保留常規ImageField的大部分功能。我所嘗試的以及到目前爲止看起來看起來很有希望的是使用CompositeField(https://bitbucket.org/mp/django-composite-field) – arie