2015-02-20 15 views
7

Ich muss dem Administrator die Funktion des Hochladens eines Bildes für eine mit AJAX, und dann zuschneiden den Teil seiner Wahl (mit einem vordefinierten Dimensionsverhältnis oder Auflösung) und speichern Sie dann das zugeschnittene Bild in der Datenbank.Laden Sie ein Bild mit AJAX, Ausschnitt Abschnitt unserer Wahl, und speichern Sie in Django Admin

Ich versuchte django-image-cropping und django-ajaximage dafür.

#Using django-image-cropping 
from image_cropping import ImageRatioField 
class Alumnus(models.Model): 
    photo = models.ImageField(null=True, blank=True) 
    cropped_photo = ImageRatioField('photo', '430x360') 


#Using django-ajaximage 
from ajaximage.fields import AjaxImageField 
class Alumnus(models.Model): 
    photo = AjaxImageField(
          upload_to='alumni_photos', 
          max_height=400, 
          max_width=400, 
          crop=True 
         ) 

Während django-ajaximage uploads ein Bild mit AJAX, aber es ist nicht der Admin zu wählen, welcher Teil des Bildes will er abgeschnitten werden, django-image-cropping Kulturen ein Bild in zwei Schritte: Zuerst müssen wir ein Bild hochladen, speichern Sie es in der db, dann müssen wir wieder das Objekt zu öffnen und Ausschnitt auswählen, und speichern Sie es erneut in der Datenbank, die ich fühle, ist unnötig umständlich. Irgendwelche Vorschläge?

+0

Sie müssen ein benutzerdefiniertes Widget erstellen. Diese Aufgabe gilt nicht nur für Python. Sie benötigen auch Java-Script auf der Client-Seite. – EvilX

+0

Ich denke, du solltest entweder die Antwort akzeptieren oder deine Bedürfnisse angeben – tgdn

Antwort

1

Es sieht so aus, als ob Sie im Browser eine JS-Bibliothek benötigen, die das eigentliche Beschneiden durchführt. Dann können Sie AJAX verwenden, um es an den Server zu senden.

DarkroomJS könnte genau das sein, was Sie brauchen. Es verwendet den HTML5-Canvas, um die Bildbearbeitung im Browser durchzuführen. Es hat tatsächlich ein paar mehr Features, als Sie brauchen, aber es sollte die Arbeit erledigen.

+0

Könntest du bitte ein bisschen genauer darüber sein, wie man das im django admin macht? Ich habe nicht viel Wissen über die Front-End-Technologien. – Iqbal

+0

Ich bin mit dem Django-Admin eigentlich nicht sehr vertraut, daher bin ich mir bei den Details nicht ganz sicher. Ich habe ein wenig gegoogelt und fand diesen Artikel, der vielleicht nützlich sein könnte: http://www.mechanicalgirl.com/post/batch-image-upload-drag-and-drop-django-admin/ Der Artikel ist über Erstellen eines Drag-and-Drop-Uploaders, aber Sie könnten diese Funktionalität wahrscheinlich durch eine zuschneidende Bibliothek ersetzen. – BenWurth