Wie verschiebe ich eine Ebene in Gimp an eine bestimmte XY-Position innerhalb der Zeichenfläche?
Derzeit kann ich nur mit den Hilfslinien und / oder der Mausposition darauf blicken. Ich möchte die genauen X- und Y-Koordinaten angeben.
Wie verschiebe ich eine Ebene in Gimp an eine bestimmte XY-Position innerhalb der Zeichenfläche?
Derzeit kann ich nur mit den Hilfslinien und / oder der Mausposition darauf blicken. Ich möchte die genauen X- und Y-Koordinaten angeben.
Antworten:
Ich fürchte, dass Gimp es nicht einschließt, weil es langweilig ist. Es ist einfach nicht die richtige Art, Elemente beim Entwerfen auszurichten, obwohl ich weiß, dass es manchmal als Abkürzung nützlich ist. Wie auch immer, der beste (richtige) Ansatz ist mit Guides:
A) Schritt 1 - Erstellen Sie die Hilfslinien
Alternativ können Sie auch Hilfslinien erstellen, die aus den Linealen gezogen werden:
B) Schritt 2 - Bewegen Sie die Leinwand
Sie können das Verschiebewerkzeug verwenden.
Eines der Konstruktionsprinzipien ist, dass die Dinge in Ihrem gesamten Projekt aufeinander abgestimmt sind. Wenn Sie die Anzahl der Ausrichtungen (Hilfslinien) reduzieren, erhalten Sie ein saubereres Design. Ich denke, aus diesem Grund enthält gimp kein Werkzeug, um die genauen Koordinaten anzugeben. Wenn Sie diesem Konstruktionsprinzip folgen möchten, ist es nur eine mühsame Arbeit, die genauen Koordinaten nacheinander anzugeben.
Relative to
Image
.Offset
Feld ein.Distribute
/ (linker Pfeil).Offset
Feld ein.Distribute
/ (Pfeil nach oben).Das ist es!
Hierzu gibt es ein Skript, das von der GIMP-Plugin-Registrierung heruntergeladen werden kann. Es wird genannt:
Ebene verschieben nach (Download) .
Verschieben Sie das Skript in ein %USERPROFILE\.gimp-2.8\scripts
Verzeichnis unter Windows, ~/Library/Application Support/GIMP/2.8/scripts
OS X oder ~/.gimp-2.8/scripts
Linux. ( Offizielle Anweisungen )
Klicks Filters
-> Script-Fu
-> Refresh scripts
.
Der neue Menüpunkt wird am unteren Rand des Layer
Menüs angezeigt Move to
.
%USERPROFILE%\.gimp-2.8\scripts
Windows ablegen. Führen Sie dann Filters
-> Script-Fu
-> aus. Refresh Scripts
Sie ist dann als unterstes Element verfügbar. Layer
->Move To
Ich benutze GIMP 2.6.11.
Mit diesen Python-Zeilen kann die aktive Ebene von der Python-Konsole an eine absolute Position wie (32, 64) verschoben werden:
>>> x_new = 32
>>> y_new = 64
>>> img = _[0]
>>> layer = img.active_layer
>>> x_off, y_off = layer.offsets
>>> pdb.gimp_layer_translate(layer, x_new - x_off, y_new - y_off)
Alternativ, wenn Sie nur den Inhalt der Ebene verschieben möchten:
Klicken Sie mit der rechten Maustaste auf Ebene> Transformieren> Versatz
oder Umschalt + Strg + O
img=gimp.image_list()[0]
. Das _ hat bei mir nicht funktioniert.
Es gibt eine sehr bequeme Möglichkeit, dies zu tun, seitdem Gimp v.2.10 verfügbar ist:
Doppelklicken Sie auf die Ebene, die Sie verschieben möchten (oder klicken Sie mit der rechten Maustaste darauf und wählen Sie "Ebenenattribute bearbeiten").
Das Dialogfeld "Ebenenattribute bearbeiten" wird angezeigt. Dort können Sie die X / Y-Offsets an Ihre Anforderungen anpassen
Einfach so einfach! :)
BEARBEITEN:
Da @Michael in seinem Kommentar zu meiner Antwort danach gefragt hat, füge ich ein Skript hinzu, das ALLE Bildebenen um die angegebenen x, y-Offsets verschiebt.
Damit es funktioniert, müssen Sie eine Datei im Gimp-Skriptordner erstellen (ein Verweis hierzu, falls erforderlich: oder ) mit folgendem Inhalt:
; This script is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This script is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;; Command is installed in "Layer->Move all layers..."
;;
;; The purpose of this script is to move all image layers by specified x,y offsets
;; X and Y offset parameters must be provided (use integer numbers as values)
;;
(define (dn-move-all-layers orig-image drawable
x-offset y-offset)
(define (get-all-layers img)
(let* (
(all-layers (gimp-image-get-layers img))
(i (car all-layers))
(bottom-to-top ())
)
(set! all-layers (cadr all-layers))
(while (> i 0)
(set! bottom-to-top (append bottom-to-top (cons (aref all-layers (- i 1)) '())))
(set! i (- i 1))
)
bottom-to-top
)
)
(define (move-layer orig-image layer-id offset-x offset-y)
(gimp-layer-set-offsets
layer-id
offset-x
offset-y
)
)
(let* (
(layers nil)
(layerpos 1)
(layer-id "")
(x-os 0)
(y-os 0)
(orig-selection 0)
)
(gimp-image-undo-disable orig-image)
(set! orig-selection (car (gimp-selection-save orig-image)))
(gimp-selection-none orig-image)
(set! x-os x-offset)
(set! y-os y-offset)
(set! layers (get-all-layers orig-image))
(while (pair? layers)
(move-layer orig-image (car layers) x-os y-os)
(set! layers (cdr layers))
(set! layerpos (+ layerpos 1))
)
(gimp-displays-flush)
(gimp-selection-load orig-selection)
(gimp-image-remove-channel orig-image orig-selection)
(gimp-image-undo-enable orig-image)
)
)
(script-fu-register "dn-move-all-layers"
"Move all layers..."
"Move each layer by specified x,y offsets."
"danicotra"
"danicotra"
"08/08/2019"
""
SF-IMAGE "Input image" 0
SF-DRAWABLE "Drawable" 0
SF-VALUE "X offset" "0"
SF-VALUE "Y offset" "0"
)
(script-fu-menu-register "dn-move-all-layers"
"<Image>/Layer/")
Wenn Sie es richtig machen, finden Sie einen neuen Befehl im Menü "Ebene" mit dem Namen "Alle Ebenen verschieben ...". Starten Sie ihn, und es wird ein Dialogfeld angezeigt, in dem Sie die X- und Y-Offsets festlegen können. Das ist es.