Jak przenieść warstwę do określonej pozycji XY w obszarze roboczym w Gimp?
Obecnie jedyny sposób, jaki mogę znaleźć, to po prostu gałkę oczną za pomocą prowadnic i / lub pozycji myszy. Chcę podać dokładne współrzędne X i Y.
Jak przenieść warstwę do określonej pozycji XY w obszarze roboczym w Gimp?
Obecnie jedyny sposób, jaki mogę znaleźć, to po prostu gałkę oczną za pomocą prowadnic i / lub pozycji myszy. Chcę podać dokładne współrzędne X i Y.
Odpowiedzi:
Obawiam się, że Gimp go nie uwzględnia, ponieważ jest to uciążliwe. Po prostu nie jest to odpowiedni sposób wyrównywania elementów podczas projektowania, choć zdaję sobie sprawę, że czasami jest przydatny jako skrót. W każdym razie najlepszym (poprawnym) podejściem są przewodniki:
A) Krok 1 - Utwórz przewodniki
Alternatywnie możesz również utworzyć prowadnice przeciągające z linijek:
B) Krok 2 - Przesuń płótno
Możesz użyć ruchomego narzędzia.
Jedną z zasad projektowania jest to, że w całym projekcie powinieneś mieć takie same elementy. Zmniejszenie liczby wyrównań (prowadnic) pomaga uzyskać czystszy projekt. Myślę, że właśnie dlatego gimp nie zawiera narzędzia do określania dokładnych współrzędnych. Jeśli chcesz postępować zgodnie z tą zasadą projektowania, określanie dokładnych współrzędnych jeden po drugim staje się po prostu żmudną pracą.
Relative to
Image
.Offset
polu.Distribute
/ (strzałka w lewo).Offset
polu.Distribute
/ (strzałka w górę).Otóż to!
Jest do tego skrypt, który można pobrać z rejestru wtyczek GIMP. Nazywa się to:
Przenieś warstwę do (pobierz) .
Przenieś skrypt do %USERPROFILE\.gimp-2.8\scripts
katalogu w systemie Windows, ~/Library/Application Support/GIMP/2.8/scripts
OS X lub ~/.gimp-2.8/scripts
Linux. ( Oficjalne instrukcje )
Kliknięcia Filters
-> Script-Fu
-> Refresh scripts
.
Nowa pozycja pojawi się na dole Layer
menu Move to
.
%USERPROFILE%\.gimp-2.8\scripts
systemie Windows, a następnie zrobić Filters
-> Script-Fu
-> Refresh Scripts
i będzie on dostępny jako najniższy element Layer
->Move To
Używam GIMP 2.6.11.
Za pomocą tych linii Pythona warstwę aktywną można przenieść do absolutnej pozycji, takiej jak (32, 64), z konsoli Python:
>>> 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)
Alternatywnie, jeśli chcesz tylko przenieść zawartość warstwy:
kliknij prawym przyciskiem myszy, Warstwa> Przekształć> Przesunięcie
lub Shft + Ctrl + O
img=gimp.image_list()[0]
. Nie działało dla mnie.
Jest to bardzo wygodny sposób, aby to zrobić, ponieważ Gimp v.2.10:
kliknij dwukrotnie warstwę, którą chcesz przenieść (lub kliknij ją prawym przyciskiem myszy i wybierz „Edytuj atrybuty warstwy”)
pojawi się okno dialogowe „Edytuj atrybuty warstwy” i tam możesz zmienić przesunięcia X / Y zgodnie z własnymi potrzebami
Po prostu takie proste! :)
EDYTOWAĆ:
Kiedy @Michael zapytał o to w swoim komentarzu do mojej odpowiedzi, dodaję skrypt, który przenosi WSZYSTKIE warstwy obrazu o określone przesunięcia x, y.
Aby to działało, musisz utworzyć plik w folderze skryptu Gimp (w razie potrzeby skorzystaj z niektórych odnośników: lub ) z następującą zawartością:
; 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/")
Jeśli zrobisz to dobrze, znajdziesz nowe polecenie w menu „Warstwa” o nazwie „Przenieś wszystkie warstwy ...”, uruchom je, a pojawi się okno dialogowe, w którym możesz zdecydować o przesunięciach X i Y. Otóż to.