如何在Gimp中将图层移动到画布中特定的XY位置?
目前,我唯一能找到的方法就是用向导和/或鼠标的位置盯着它。我想指定确切的X和Y坐标。
如何在Gimp中将图层移动到画布中特定的XY位置?
目前,我唯一能找到的方法就是用向导和/或鼠标的位置盯着它。我想指定确切的X和Y坐标。
Answers:
恐怕Gimp不包含它,因为它很乏味。尽管我认识到有时它作为捷径很有用,但这并不是在设计时对齐元素的适当方法。无论如何,最好的(正确的)方法是使用以下指南:
A)步骤1-创建指南
或者,您也可以创建从标尺拖动的辅助线:
B)步骤2-移动画布
您可以使用移动工具。
设计原则之一是您应该使整个项目中的内容保持一致。减少路线(指南)的数量有助于您获得更整洁的设计。我认为这就是为什么gimp不包括指定确切坐标的工具的原因。如果要遵循此设计原则,一一指定精确的坐标就变得很繁琐。
Relative to
Image
。Offset
字段中输入X。Distribute
/ (向左箭头)。Offset
字段中输入Y。Distribute
/ (向上箭头)。而已!
有一个脚本可以从GIMP插件注册表中下载。它称为:
将脚本移动到%USERPROFILE\.gimp-2.8\scripts
Windows,~/Library/Application Support/GIMP/2.8/scripts
OS X或~/.gimp-2.8/scripts
Linux 上的目录。(官方指示)
点击Filters
-> Script-Fu
-> Refresh scripts
。
新菜单项将出现在Layer
菜单底部Move to
。
%USERPROFILE%\.gimp-2.8\scripts
Windows中,然后执行Filters
-> Script-Fu
-> Refresh Scripts
,它将作为最底部的项可用Layer
->Move To
我正在使用GIMP 2.6.11。
使用以下这些Python行,可以将活动层从Python控制台移至绝对位置,例如(32,64):
>>> 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)
另外,如果您只想移动图层的内容,请执行以下操作:
右键单击,图层>变换>偏移
或Shft + Ctrl + O
img=gimp.image_list()[0]
。_没有为我工作。
从Gimp v.2.10开始,有一种非常方便的方法可以做到这一点:
双击要移动的图层(或右键单击它并选择“编辑图层属性”)
将显示“编辑图层属性”对话框,您可以在此处根据需要更改X / Y偏移量
那样简单!:)
编辑:
正如@Michael在对我的答案的评论中询问的那样,我正在添加一个脚本,该脚本将所有图像层移动指定的x,y偏移量。
为了使其正常工作,您需要在Gimp脚本文件夹中创建一个文件(如果需要,请提供一些参考:或),其内容如下:
; 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/")
如果操作正确,您将在“层”菜单中找到一个名为“移动所有层...”的新命令,将其启动,然后将显示一个对话框,让您确定X和Y偏移。而已。