¿Cómo muevo una capa a una posición XY específica dentro del lienzo en Gimp?
Actualmente, la única forma que puedo encontrar es simplemente mirarlo con las guías y / o la posición del mouse. Quiero especificar las coordenadas exactas de X e Y.
¿Cómo muevo una capa a una posición XY específica dentro del lienzo en Gimp?
Actualmente, la única forma que puedo encontrar es simplemente mirarlo con las guías y / o la posición del mouse. Quiero especificar las coordenadas exactas de X e Y.
Respuestas:
Me temo que Gimp no lo incluye porque es tedioso. Simplemente no es la forma adecuada de alinear elementos cuando está diseñando, aunque reconozco que a veces es útil como atajo. De todos modos, el mejor enfoque (correcto) es con guías:
A) Paso 1 - Crea las guías
Alternativamente, también puede crear las guías arrastrando desde las reglas:
B) Paso 2 - Mueve el lienzo
Puedes usar la herramienta de movimiento.
Uno de los principios de diseño es que debe alinear las cosas en todo su proyecto. Reducir el número de alineaciones (guías) le ayuda a obtener un diseño más limpio. Creo que es por eso que Gimp no incluye una herramienta para especificar las coordenadas exactas. Si desea seguir este principio de diseño, especificar coordenadas exactas una por una se convierte en una labor tediosa.
Relative to
Image
.Offset
campo.Distribute
/ (flecha izquierda).Offset
campo.Distribute
/ (flecha hacia arriba).¡Eso es!
Hay un script para hacer esto que se puede descargar desde el registro del complemento GIMP. Se llama:
Mueva el script al %USERPROFILE\.gimp-2.8\scripts
directorio en Windows, ~/Library/Application Support/GIMP/2.8/scripts
en OS X o ~/.gimp-2.8/scripts
en Linux. ( Instrucciones oficiales )
Clics Filters
-> Script-Fu
-> Refresh scripts
.
El nuevo elemento del menú aparecerá en la parte inferior del Layer
menú Move to
.
%USERPROFILE%\.gimp-2.8\scripts
Windows, luego hacer Filters
-> Script-Fu
-> Refresh Scripts
y estará disponible como el elemento más inferior Layer
->Move To
Estoy usando GIMP 2.6.11.
Con estas líneas de Python, la capa activa se puede mover a una posición absoluta, como (32, 64), desde la consola de 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)
Alternativamente, si solo desea mover el contenido de la capa:
clic derecho, Capa> Transformar> Desplazamiento
o Shft + Ctrl + O
img=gimp.image_list()[0]
. El _ no funcionó para mí.
Hay una forma muy conveniente de hacer esto disponible desde el Gimp v.2.10:
haga doble clic en la capa que desea mover (o haga clic derecho sobre ella y seleccione "Editar atributos de capa")
aparecerá el cuadro de diálogo "Editar atributos de capa" y allí podrá cambiar los desplazamientos X / Y según sus necesidades
Simplemente así de fácil! :)
EDITAR:
Como @Michael preguntó al respecto en su comentario a mi respuesta, estoy agregando un script que moverá TODAS las capas de imagen en desplazamientos especificados x, y.
Para que funcione, debe crear un archivo en la carpeta de script de Gimp (alguna referencia para esto si lo necesita: o ) con el siguiente contenido:
; 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/")
Si lo hace correctamente, encontrará un nuevo comando en el menú "Capa" llamado "Mover todas las capas ...", ejecútelo y aparecerá un cuadro de diálogo que le permitirá decidir las compensaciones X e Y. Eso es.