Gimpのキャンバス内の特定のXY位置にレイヤーを移動するにはどうすればよいですか?
現在、私が見つけることができる唯一の方法は、ガイドやマウスの位置でそれを見るだけです。正確なX座標とY座標を指定したい。
Gimpのキャンバス内の特定のXY位置にレイヤーを移動するにはどうすればよいですか?
現在、私が見つけることができる唯一の方法は、ガイドやマウスの位置でそれを見るだけです。正確なX座標とY座標を指定したい。
回答:
退屈なので、Gimpには含まれていません。設計時に要素を配置する適切な方法ではありませんが、ショートカットとして役立つ場合があることを認識しています。とにかく、最良の(正しい)アプローチはガイドを使用することです:
A)ステップ1-ガイドを作成する
または、定規からドラッグするガイドを作成することもできます。
B)ステップ2-キャンバスを移動する
移動ツールを使用できます。
設計原則の1つは、プロジェクト全体で物事を整合させる必要があるということです。アライメント(ガイド)の数を減らすと、よりクリーンなデザインを得ることができます。これが、gimpに正確な座標を指定するツールが含まれていない理由だと思います。この設計原理に従って、正確な座標を1つずつ指定するのは面倒な作業になります。
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オフセットを決定できます。それでおしまい。