Como mover uma camada para uma posição XY específica dentro da tela no Gimp?
Atualmente, a única maneira que posso encontrar é apenas observá-lo com as guias e / ou a posição do mouse. Eu quero especificar as coordenadas X e Y exatas.
Como mover uma camada para uma posição XY específica dentro da tela no Gimp?
Atualmente, a única maneira que posso encontrar é apenas observá-lo com as guias e / ou a posição do mouse. Eu quero especificar as coordenadas X e Y exatas.
Respostas:
Receio que o Gimp não o inclua porque é tedioso. Simplesmente não é a maneira apropriada de alinhar elementos quando você está projetando, embora reconheça que às vezes é útil como atalho. De qualquer forma, a melhor abordagem (correta) é com guias:
A) Etapa 1 - Crie os guias
Como alternativa, você também pode criar as guias arrastando das réguas:
B) Etapa 2 - Mova a tela
Você pode usar a ferramenta móvel.
Um dos princípios de design é que você deve alinhar as coisas em todo o projeto. Reduzir o número de alinhamentos (guias) ajuda a obter um design mais limpo. Eu acho que é por isso que o gimp não inclui uma ferramenta para especificar as coordenadas exatas. Se você deseja seguir esse princípio de design, especificar as coordenadas exatas, uma a uma, se torna apenas um trabalho tedioso.
Relative to
Image
.Offset
campo.Distribute
/ (seta esquerda).Offset
campo.Distribute
/ (seta para cima).É isso aí!
Há um script para fazer isso que pode ser baixado do registro do GIMP Plugin. É chamado:
Mover camada para (download) .
Mova o script para o %USERPROFILE\.gimp-2.8\scripts
diretório no Windows, ~/Library/Application Support/GIMP/2.8/scripts
no OS X ou ~/.gimp-2.8/scripts
no Linux. ( Instruções oficiais )
Cliques Filters
-> Script-Fu
-> Refresh scripts
.
O novo item de menu aparecerá na parte inferior do Layer
menu Move to
.
%USERPROFILE%\.gimp-2.8\scripts
no Windows, depois faça Filters
-> Script-Fu
-> Refresh Scripts
e ele estará disponível como o item mais inferior Layer
->Move To
Estou usando o GIMP 2.6.11.
Com essas linhas do Python, a camada ativa pode ser movida para uma posição absoluta, como (32, 64), no console do 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)
Como alternativa, se você deseja mover apenas o conteúdo da camada:
clique com o botão direito do mouse, Camada> Transformar> Deslocamento
ou Shft + Ctrl + O
img=gimp.image_list()[0]
. O _ não funcionou para mim.
Existe uma maneira muito conveniente de fazer isso disponível desde o Gimp v.2.10:
clique duas vezes na camada que deseja mover (ou clique com o botão direito do mouse e selecione "Editar atributos da camada")
a caixa de diálogo "Editar atributos da camada" será exibida e você poderá alterar os deslocamentos X / Y conforme suas necessidades
Simplesmente fácil assim! :)
EDITAR:
Como o @Michael perguntou sobre isso em seu comentário à minha resposta, estou adicionando um script que moverá TODAS as camadas de imagem por deslocamentos x, y especificados.
Para fazê-lo funcionar, você precisa criar um arquivo na pasta de scripts Gimp (alguma referência para isso, se precisar: ou ) com o seguinte conteúdo:
; 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/")
Se você fizer certo, encontrará um novo comando no menu "Camada" chamado "Mover todas as camadas ...", inicie-o e uma caixa de diálogo será exibida, permitindo que você decida as compensações X e Y. É isso aí.