Gimp에서 캔버스 내에서 특정 XY 위치로 레이어를 어떻게 이동합니까?
현재 내가 찾을 수있는 유일한 방법은 가이드 및 / 또는 마우스 위치로 눈을 보는 것입니다. 정확한 X 및 Y 좌표를 지정하고 싶습니다.
Gimp에서 캔버스 내에서 특정 XY 위치로 레이어를 어떻게 이동합니까?
현재 내가 찾을 수있는 유일한 방법은 가이드 및 / 또는 마우스 위치로 눈을 보는 것입니다. 정확한 X 및 Y 좌표를 지정하고 싶습니다.
답변:
김프가 지루하기 때문에 포함하지 않을까 걱정됩니다. 때로는 디자인 할 때 요소를 정렬하는 적절한 방법이 아니지만 때로는 지름길로 유용하다는 것을 알고 있습니다. 어쨌든 가장 좋은 (올바른) 접근 방식은 가이드입니다.
A) 1 단계-안내선 작성
또는 눈금자에서 드래그하는 안내선을 만들 수도 있습니다.
B) 2 단계-캔버스 이동
이동 도구를 사용할 수 있습니다.
디자인 원칙 중 하나는 전체 프로젝트에서 일을 조정해야한다는 것입니다. 정렬 (가이드) 수를 줄이면보다 깔끔한 디자인을 얻을 수 있습니다. 이것이 김프가 정확한 좌표를 지정하는 도구를 포함하지 않는 이유라고 생각합니다. 이 설계 원칙을 따르고 싶다면 정확한 좌표를 하나씩 지정하면 지루한 노동력이됩니다.
Relative to
Image
.Offset
.Distribute
/ (왼쪽 화살표)를 클릭하십시오 .Offset
.Distribute
/ (위쪽 화살표)를 클릭하십시오 .그게 다야!
김프 플러그인 레지스트리에서 다운로드 할 수있는 스크립트가 있습니다. 그것은이라고:
스크립트를 %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
김프 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 오프셋을 결정할 수있는 대화 상자가 나타납니다. 그게 다야.