създаване на поле за изрязване на изображение - как да съхранявате данните на джаджата?

Чудя се как най-добре да внедря ImageField с възможност за изрязване в Django.

По принцип бих искал да кача изображения и да ги изрежа. Например с помощта на imagAreaSelect

Първият подход, който ми хрумна, беше да създам ImageField и някои мета полета на моя модел, за да съхраня съотношението на изрязване, ширината и височината на моя избор. Но се чудя дали има по-чисти начини за решаване на това и за допълнително капсулиране на поведението при изрязване.

Така че в крайна сметка бих искал да обвия желаното поведение в джаджа. Въпреки че проблемът, който виждам, е, че джаджите обикновено се нанасят в едно поле на база данни.

Така че се чудя дали това изобщо е изпълнимо и как най-добре да запазя данните си за изображение?


person arie    schedule 04.07.2011    source източник


Отговори (2)


В крайна сметка създадохме приложение за многократна употреба за изрязване на изображения: django-image-cropping

person arie    schedule 03.09.2012
comment
приложението изглежда страхотно! Възможно ли е да подканите потребителя да преоразмери и изреже изображението? - person Lara; 12.04.2016

Има няколко начина да направите това. Един от начините е да се изведе името на изрязаното изображение от името на неизрязаното изображение. Така че, ако имате ImageField и има изображение с име uploads/images/family.jpg, вашето CropableImageWidget може да предположи, че изрязаното изображение се съхранява в uploads/images/cropped/family.jpg.

Другият начин е да създадете свой собствен тип поле на база данни, което съхранява сериализирано представяне на всички файлове, които създавате, докато изрязвате. Може да е чрез JSON.

person Donald Stufft    schedule 04.07.2011
comment
Хей, Доналд, благодаря за предложенията. Това, което не ми харесва в опция 1 е, че все пак трябва да създам отделно поле за качване. И тъй като наистина бих искал тази функционалност да бъде възможно най-капсулирана, така че в идеалния случай трябва да използвам само моето CropImageField в моята дефиниция на модел и да не се налага да настройвам други неща. Да сериализирам данните в едно поле също ми хрумна, но отново бих искал да запазя по-голямата част от функционалността на обикновения ImageField. Това, което опитах и ​​което наистина изглежда обещаващо досега, е да използвам CompositeField (bitbucket.org/mp/ django-composite-field) - person arie; 06.07.2011