ImageField in Verbindung mit File.width

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Hallo wie setze ich bei einem ImageField das File.width Attribut ein?

Sowas wie bild1 = models.ImageField(upload_to='uploads/', File.width=300)
geht wohl eher nicht?

Muss ich die Save Methode irgendwie überschreiben?

Werde aus der Doku nicht schlau.
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

width gibt's nicht ;) Lesen und überlegen was du eigentlich willst. http://docs.djangoproject.com/en/dev/re ... imagefield
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Die Doku ist an dieser Stelle auch relativ schlecht. Insbesondere die Eigenart, bei den Parameternamen nochmal die Klasse voranzustellen, finde ich sehr verwirrend. Die alte Form mit einer netten Tabelle wahr übersichtlicher. Gemeint ist (ohne Gewähr) wohl dies:

Code: Alles auswählen

class Pics(models.Model):
    pic = models.ImageField(upload_to='...', height_field='height', width_field='width')
    width = models.IntegerField()
    height = models.IntegerField()
Stefan
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Was bewirken height_field='height', width_field='width' ???

Nein gemeint war eigentlich diese Stelle:
In addition to the special attributes that are available for FileField, an ImageField also has File.height and File.width attributes. See Managing files.

Requires the Python Imaging Library.


Wenn ich das richtig verstehe, muss es damit doch möglich sein die Bilder mit dem Upload auf eine gewählte Größe zu skalieren???
Daher brauch man wohl die ImageLibrary.

Die Doku ist an dieser Stelle allerdings wirklich nicht gut, da man immer nur an eine andere Stelle weitergeleitet wird irgendwie.

Na auf jedenfall möchte ich die Bilder mit dem Upload auf eine bestimmt Größe bringen.
Man kann bei der Verwendung eines CMS nicht von jedem verlangen, dass er das Bild selbst mit einer Bildbearbeitungssoftware in der Größe anpassen kann und dann erst hochläd.
Momentan regele ich das Ganze noch sehr sehr unschön mit dem Attributen width und height vom html-Element img.

Also denke jetzt sollte klar sein was ich will :)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Nein, damit kannst du keine Bilder skalieren (denke ich), sondern die Höhe und Breite eines Bildes in deinem Modell abspeichern. Praktisch, wenn du das Bild wieder anzeigen willst, weil dann das <img>-Element diese Angaben enthalten sollte, damit der Browser schneller das Layout erstellen kann.

Stefan
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Wäre dann praktisch auch nichts anderes als das was ich gemacht habe.

Nur, dass ich das im Template gemacht habe und es so im Model gemacht wird?

Bin mir da aber nicht so sicher. Wieso geht es dann um File-Managing?
Dann muss doch in irgendeiner Art auch was mit der Datei gemacht werden!?!?
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Das ganze dient doch zum Hochladen von Bildern. Die Bilder werden daher auf dem Server gespeichert. Das ist das "File-Managing".

Stefan
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Ja aber das was du meinst erledigt doch das height_field='height', width_field='width' oder nicht?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

ferix hat geschrieben:Wäre dann praktisch auch nichts anderes als das was ich gemacht habe.

Nur, dass ich das im Template gemacht habe und es so im Model gemacht wird?
Jein, so kannst du zb Breite und Höhe angeben ohne das File zu laden, da Django das eben in height_field/width_field schreibt....
Bin mir da aber nicht so sicher. Wieso geht es dann um File-Managing?
Dann muss doch in irgendeiner Art auch was mit der Datei gemacht werden!?!?
Wann und wo? Sie wird nur hochgeladen und gespeichert, bearbeitet wird sie nicht.
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

http://docs.djangoproject.com/en/dev/re ... imagefield

Wie gesagt es geht um folgende Textstelle:
In addition to the special attributes that are available for FileField, an ImageField also has File.height and File.width attributes. See Managing files.

Requires the Python Imaging Library.


Das hört sich für mich einfach so an, als könnte man damit die Größe des Bildes verändern. Naja ich muss einfach nochmal schauen.
BlackJack

Das kann aber auch einfach nur bedeuten, dass PIL benötigt wird um Höhe und Breite aus der Bilddatei *auszulesen*.
ferix
User
Beiträge: 128
Registriert: Sonntag 1. Juni 2008, 18:21

Das könnte natürlich auch sein ^^
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

ferix hat geschrieben:Das könnte natürlich auch sein ^^
Kann nicht sein, ist so. Und nein, das Attribut hat für mich noch nie angedeutet, dass ich das Bild damit skalieren könnte, wäre auch zu komische.
Antworten