2010-07-30 15 views
5

Ich schreibe eine einfache Anwendung in Python, die Bilder anzeigt. Ich muss Zoom In und Zoom Out implementieren, indem Sie das Bild skalieren.
Ich denke, die Image.transform Methode in der Lage sein wird, dies zu tun, aber ich bin nicht sicher, wie es zu benutzen, da es so, dass für eine affine Matrix oder etwas fragt: P
Hier ist das Zitat aus die Dokumentation:Zoomen mit Python Image Library

im.transform (Größe, affin Daten, Filter) => Bild

Wendet ein affiner an das Bild zu transformieren und das Ergebnis wird in einem neuen Bild mit der gegebenen Größe.

Daten sind ein 6-Tupel (a, b, c, d, e, f), das die ersten zwei Zeilen einer affinen Transformationsmatrix enthält. Für jedes Pixel (x, y) in dem Ausgabebild wird der neue Wert von einer Position (a x + b y + c, d x + e y + f) in dem Eingabebild genommen, auf das nächste Pixel gerundet.

Diese Funktion kann zum Skalieren, Verschieben, Drehen und Scheren des Originalbildes verwendet werden.

Antwort

5

Sie wären viel besser mit der EXTENT anstatt der AFFINE Methode. Sie müssen nur zwei Dinge berechnen: Welchen Teil der Eingabe möchten Sie sehen und wie groß sollte es sein? Wenn Sie beispielsweise das gesamte Bild auf die halbe Größe verkleinern möchten (dh um 2 verkleinern), übergeben Sie die Daten (0, 0, Bildgröße [0], Bildgröße [1]) und die Größe (im.size [0]/2, im.size [1]/2).

+0

Danke für die Info, es funktioniert toll :) –

0

Es gilt eine affine Transformation und eine lineare Transformation gefolgt von einer Translation. Sie sollten jedoch nur einen Teil des Bildes mithilfe der Methode resize skalieren. Es gibt einige Beispielcodes in dem folgenden SO beantworten:

+0

Danke, ich bin mit dem Ausmaß ein, aber das Beispiel war sehr hilfreich:) –