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
Przejdź do Image-> Guide-> New Guide
Określ, czy chcesz i prowadnicę poziomą czy pionową
Określ liczbę pikseli
Powtórz procedurę dla innego poziomego lub pionowego prowadnika (możesz także zrobić więcej prowadnic, aby określić szerokość i wysokość)
Alternatywnie możesz również utworzyć prowadnice przeciągające z linijek:
Przeciągnij w dół (zaczynając od górnej linijki) przewodnik po współrzędnej Y, którą chcesz.
Przeciągnij w dół (zaczynając od lewej linijki) przewodnik po współrzędnej X, którą chcesz.
B) Krok 2 - Przesuń płótno
Możesz użyć ruchomego narzędzia.
Wybierz swoją warstwę
Przejdź do Narzędzia -> Narzędzia transformacji -> Przenieś
Przeciągnij warstwę do prowadnic. Gimp da ci rękę z dokładnymi pikselami.
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ą.
Zauważ, że wydaje się, że możesz wybrać tylko górną widoczną warstwę - to znaczy, że musisz ukryć warstwy na wierzchu warstwy, która ma zostać wyrównana (Gimp 2.8.16).
Skippy le Grand Gourou,
Czy używa to jednostki pikseli? Wydaje się, że porusza mój wizerunek znacznie bardziej, niż się spodziewałbym.
palswim
@palswim Dla mnie zadziałało, gdy kliknąłem górną grupę przycisków (Wyrównaj) zamiast dolnej grupy (Rozłóż). Tak, jest mierzony w pikselach (przynajmniej w mojej konfiguracji).
Rodrigo,
20
Jest do tego skrypt, który można pobrać z rejestru wtyczek GIMP. Nazywa się to:
Przenieś skrypt do %USERPROFILE\.gimp-2.8\scriptskatalogu w systemie Windows, ~/Library/Application Support/GIMP/2.8/scriptsOS X lub ~/.gimp-2.8/scriptsLinux. ( Oficjalne instrukcje )
Kliknięcia Filters-> Script-Fu-> Refresh scripts.
Nowa pozycja pojawi się na dole Layermenu Move to.
Prawie idealnie! Byłoby miło, gdyby okno dialogowe parametrów używało bieżących współrzędnych warstwy jako wartości domyślnych.
Oliver Giesen
4
Musisz pobrać ten plik .scm i umieścić go w %USERPROFILE%\.gimp-2.8\scriptssystemie Windows, a następnie zrobić Filters-> Script-Fu-> Refresh Scriptsi będzie on dostępny jako najniższy element Layer->Move To
DarkWalker
3
Odpowiedź Davidsa działa bez skryptu.
Michael S.,
1
NIE działa dla przesunięcia ujemnego. a UX jest słaby (nie zachowuj ostatniej wartości itp.).
Loda,
11
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:
Powoduje to ruch pikseli w warstwie, a nie samej warstwy - muszę przenieść rzeczywistą warstwę. To, co zasugerowałeś, może działać, jeśli warstwa ma taki sam rozmiar jak płótno lub przynajmniej jest wystarczająco duża, aby nie przyciąć żadnych nieprzezroczystych pikseli w warstwie.
Scott,
@Scott: Rozumiem - przepraszam, nie znalazłem łatwiejszego sposobu, ale przynajmniej wymyśliłem, jak przenieść warstwę do absolutnej pozycji za pomocą niektórych linii Pythona.
Nicolas Kaiser,
2
Kod trzeciego wiersza powinien być img=gimp.image_list()[0]. Nie działało dla mnie.
apple16
2
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.
Czy jest jakiś sposób, aby uczynić to nieco szybszym, gdy masz dużo warstw do przesunięcia (jak w setkach)? Byłoby wspaniale, gdyby to coś mogło zadokować, więc nie musiałem wychowywać go dla każdej warstwy!
Michael
1
@Michael: Cóż, myślę, że powinieneś w tym przypadku zająć się skryptami, podobnie jak zaproponował rozwiązanie Nicolas Kaiser, ale zapętlając warstwy obrazów ... Właśnie edytowałem swoją odpowiedź, aby pokazać ci, jak to zrobić. (Udzieliłbym na to osobnej odpowiedzi, ale OP poprosił konkretnie o przesunięcie JEDNEJ warstwy, nie wszystkich. Jeśli zadasz nowe pytanie, chętnie odpowiem tam, dodając kilka zrzutów ekranu i całą resztę; - D) Na zdrowie
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ą.
źródło
Relative to
Image
.Offset
polu.Distribute
/ (strzałka w lewo).Offset
polu.Distribute
/ (strzałka w górę).Otóż to!
źródło
Jest do tego skrypt, który można pobrać z rejestru wtyczek GIMP. Nazywa się to:
Przenieś warstwę do (pobierz) .
Żeby zainstalować:
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
menuMove to
.źródło
%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 elementLayer
->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:
Alternatywnie, jeśli chcesz tylko przenieść zawartość warstwy:
kliknij prawym przyciskiem myszy, Warstwa> Przekształć> Przesunięcie
lub Shft + Ctrl + O
źródł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ą:
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.
źródło