2010-10-07 22 views
5

Fangen Sie gerade mit GIMP heute. Wenn ich die Leinwand in GIMP manuell verändere (so dass sie kleiner ist als die Bildgröße), kann ich das Bild verschieben, damit ich den sichtbaren Bereich "ändern" kann. Wie repliziere ich das in einem Skript? Mit anderen Worten, ich möchte, dass das Skript im Schritt zum Ändern der Größe des Arbeitsbereichs angehalten wird und ich das Bild korrekt positionieren kann.GIMP - Scripting einer Leinwand Größe ändern

Der Grund, warum ich frage: Ich habe ein kleines Skript geschrieben, das quadratische Miniaturansichten von Bildern erstellen wird. Die Art und Weise, wie ich das mache, besteht darin, die Größe der Leinwand so zu ändern, dass Höhe und Breite gleich sind. Wenn die Höhe und die Breite unterschiedlich sind, ändere ich die höhere der beiden, so dass sie gleich der unteren ist (z. B. wird 600x500 500x500). Ich glätte dann das Bild und skaliere es zu dem, was ich brauche.

(if (>= width height) 
    (begin 
     (gimp-image-resize image height height 0 0) 
    ) 
    (begin 
     (gimp-image-resize image width width 0 0) 
    ) 
) 

Der Code, den ich verwende, um die Leinwand zu ändern, ist oben. Ich weiß, dass die letzten beiden Werte im Befehl gimp-image-resize auf die Offsets verweisen. Dies ist, was ich manuell ändern möchte, wenn das Skript diesen Schritt erreicht. Jede Hilfe würde sehr geschätzt werden. Vielen Dank!

Antwort

3

Funktioniert Ihr Code? Wenn ja, hier ist eine besser aussehende Version des gleichen Codes:

(let ((smaller-edge (min width height))) 
    (gimp-image-resize image smaller-edge smaller-edge 0 0)) 
+1

Es funktioniert, obwohl Ihre Version auf jeden Fall sauberer aussieht. Vielen Dank! Da ich neu bei GIMP und Scheme bin, kannte ich nicht viele der verfügbaren Methoden. Leider löst das immer noch nicht mein Problem. – zdyn

Verwandte Themen