김프에서 특정 X, Y 위치로 레이어 이동


58

Gimp에서 캔버스 내에서 특정 XY 위치로 레이어를 어떻게 이동합니까?

현재 내가 찾을 수있는 유일한 방법은 가이드 및 / 또는 마우스 위치로 눈을 보는 것입니다. 정확한 X 및 Y 좌표를 지정하고 싶습니다.


나도 이것을 알고 싶어하거나 Photoshop에서 어떻게해야합니까. 나는 그것에 대해 질문했다. superuser.com/questions/345669/…
Jonny

1
아래와 같이 파이썬 코드를 사용하지 않고 김프에서 (쉽게) 가능하지 않은 것 같습니다 : graphicdesign.stackexchange.com/a/6813/8841
SabreWolfy

네 가능합니다. 내 대답을 읽으십시오.
David

답변:


31

김프가 지루하기 때문에 포함하지 않을까 걱정됩니다. 때로는 디자인 할 때 요소를 정렬하는 적절한 방법이 아니지만 때로는 지름길로 유용하다는 것을 알고 있습니다. 어쨌든 가장 좋은 (올바른) 접근 방식은 가이드입니다.


A) 1 단계-안내선 작성

  1. 이미지-> 가이드-> 새 가이드로 이동
  2. 원하는 경우 수평 또는 수직 안내를 지정하십시오
  3. 픽셀 수를 지정하십시오
  4. 다른 수평 또는 수직 안내에 대해 절차를 반복합니다 (너비와 높이를 지정하기 위해 추가 안내를 수행 할 수도 있습니다).

또는 눈금자에서 드래그하는 안내선을 만들 수도 있습니다.

  1. 상단 눈금자에서 시작하여 원하는 Y 좌표로 안내선을 아래로 끕니다.
  2. 왼쪽 눈금자에서 시작하여 원하는 X 좌표로 안내선을 아래로 끕니다.

B) 2 단계-캔버스 이동

이동 도구를 사용할 수 있습니다.

  1. 레이어를 선택하십시오
  2. 도구-> 변형 도구-> 이동으로 이동하십시오.
  3. 레이어를 안내선으로 드래그하십시오. 김프는 정확한 픽셀로 손을 줄 것입니다.

디자인 원칙 중 하나는 전체 프로젝트에서 일을 조정해야한다는 것입니다. 정렬 (가이드) 수를 줄이면보다 깔끔한 디자인을 얻을 수 있습니다. 이것이 김프가 정확한 좌표를 지정하는 도구를 포함하지 않는 이유라고 생각합니다. 이 설계 원칙을 따르고 싶다면 정확한 좌표를 하나씩 지정하면 지루한 노동력이됩니다.


정확히 내가 필요한 것-감사합니다. 사용 사례 : 다른 두 바탕 화면에서 이중 헤드 설정을위한 바탕 화면 만들기 :)
smbear

22
  1. 여기에 이미지 설명을 입력하십시오(정렬 도구)를 선택합니다 .
  2. 확인하십시오 Relative to Image.
  3. 캔버스에서 레이어를 클릭하십시오.
  4. 필드에 X를 입력하십시오 Offset.
  5. Distribute/ 여기에 이미지 설명을 입력하십시오(왼쪽 화살표)를 클릭하십시오 .
  6. 필드에 Y를 입력하십시오 Offset.
  7. Distribute/ 여기에 이미지 설명을 입력하십시오(위쪽 화살표)를 클릭하십시오 .

그게 다야!


1
이것은 음의 오프셋에 적용됩니다.
Loda

1
맨 위에 보이는 레이어 만 선택할 수 있습니다. 즉, 정렬 할 레이어 위에 레이어를 숨겨야합니다 (짐 2.8.16).
Skippy le Grand Gourou

픽셀 단위를 사용합니까? 이미지가 예상보다 훨씬 많이 움직이는 것 같습니다.
palswim

@palswim 나를 위해 하단 그룹 (배포) 대신 상단 버튼 그룹 (정렬)을 클릭했을 때 효과가있었습니다. 예, 픽셀 단위로 측정됩니다 (적어도 내 구성에서는).
Rodrigo

20

김프 플러그인 레지스트리에서 다운로드 할 수있는 스크립트가 있습니다. 그것은이라고:

(다운로드)로 레이어를 이동합니다 .

설치하기 위해서:

  1. 스크립트를 %USERPROFILE\.gimp-2.8\scriptsWindows, ~/Library/Application Support/GIMP/2.8/scriptsOS X 또는 ~/.gimp-2.8/scriptsLinux의 디렉토리로 이동하십시오 . ( 공식 지침 )

  2. 클릭 Filters-> Script-Fu-> Refresh scripts.

  3. 새로운 메뉴 항목은 하단에 표시됩니다 Layer메뉴 Move to.


좋은 첫 대답!
slm

거의 완벽합니다! 매개 변수 대화 상자에서 레이어의 현재 좌표를 기본값으로 사용하면 좋을 것입니다.
Oliver Giesen

4
해당 .scm 파일을 다운로드 %USERPROFILE%\.gimp-2.8\scripts하여 Windows에 저장 한 다음 수행 Filters-> Script-Fu-> Refresh Scripts가장 아래쪽에있는 항목으로 사용할 수 있습니다 Layer.->Move To
DarkWalker

3
Davids는 대본없이 작업을 수행합니다.
Michael S.

1
음수 오프셋에는 작동하지 않습니다. UX는 좋지 않습니다 (마지막 값 등을 유지하지 마십시오).
Loda

11

김프 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


1
이로 인해 레이어 자체가 아닌 레이어 내의 픽셀이 이동합니다. 실제 레이어를 이동해야합니다. 레이어의 크기가 캔버스와 같거나 레이어에서 투명하지 않은 픽셀을자를 수 없을 정도로 클 경우 제안한 내용이 효과가있을 수 있습니다.
Scott

@ Scott : 알았습니다. 죄송합니다. 쉬운 방법을 찾지 못했지만 적어도 파이썬 라인을 사용하여 레이어를 절대 위치로 이동시키는 방법을 알아 냈습니다.
니콜라스 카이저

2
세 번째 줄은입니다 img=gimp.image_list()[0]. _는 저에게 효과가 없었습니다.
apple16

3

Gimp v.2.10 이후로이 작업을 수행하는 매우 편리한 방법이 있습니다.

  1. 이동할 레이어를 두 번 클릭하거나 마우스 오른쪽 버튼으로 클릭하고 "레이어 속성 편집"을 선택하십시오.

  2. "레이어 속성 편집"대화창이 나타나고 필요에 따라 X / Y 오프셋을 변경할 수 있습니다

그렇게 간단하게! :)

레이어 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 오프셋을 결정할 수있는 대화 상자가 나타납니다. 그게 다야.


이동할 레이어가 많을 때 (수백 단위로) 이것을 더 빠르게 만드는 방법은 무엇입니까? 이 일이 도킹 될 수 있다면 좋을 것이므로 모든 레이어에 적용 할 필요는 없습니다!
Michael

1
@Michael : 글쎄, 니콜라스 카이저가 제안한 솔루션과 비슷하지만 이미지 레이어를 반복하는 것과 마찬가지로이 경우 스크립팅을해야한다고 생각합니다. 내 방법을 보여주기 위해 대답을 편집했습니다. (나는 그것에 대해 별도의 답변을했지만 OP는 레이어가 아닌 하나의 레이어를 이동하도록 특별히 요청했습니다. 이에 대해 새로운 질문을하면 스크린 샷과 나머지 부분을 추가하여 기뻐할 것입니다. D) 건배
danicotra
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.