Làm cách nào để di chuyển một lớp đến một vị trí XY cụ thể trong khung vẽ trong Gimp?
Hiện tại, cách duy nhất tôi có thể tìm thấy là chỉ nhìn nhãn cầu bằng hướng dẫn và / hoặc vị trí chuột. Tôi muốn chỉ định tọa độ X và Y chính xác.
Làm cách nào để di chuyển một lớp đến một vị trí XY cụ thể trong khung vẽ trong Gimp?
Hiện tại, cách duy nhất tôi có thể tìm thấy là chỉ nhìn nhãn cầu bằng hướng dẫn và / hoặc vị trí chuột. Tôi muốn chỉ định tọa độ X và Y chính xác.
Câu trả lời:
Tôi sợ rằng Gimp không bao gồm nó bởi vì nó tẻ nhạt. Nó đơn giản không phải là cách thích hợp để sắp xếp các yếu tố khi bạn thiết kế, mặc dù tôi nhận ra rằng đôi khi nó hữu ích như một cách rút gọn. Dù sao, cách tiếp cận (chính xác) tốt nhất là với hướng dẫn:
A) Bước 1 - Tạo hướng dẫn
Ngoài ra, bạn cũng có thể tạo các hướng dẫn kéo từ thước kẻ:
B) Bước 2 - Di chuyển khung vẽ
Bạn có thể sử dụng công cụ di chuyển.
Một trong những nguyên tắc thiết kế là bạn nên có những thứ phù hợp trong toàn bộ dự án của bạn. Giảm số lượng sắp xếp (hướng dẫn) giúp bạn có được một thiết kế sạch hơn. Tôi nghĩ đây là lý do tại sao gimp không bao gồm một công cụ để xác định tọa độ chính xác. Nếu bạn muốn tuân theo nguyên tắc thiết kế này, việc chỉ định tọa độ chính xác từng cái một sẽ trở thành một công việc tẻ nhạt.
Relative to
Image
.Offset
trường.Distribute
/ (mũi tên trái).Offset
trường.Distribute
/ (mũi tên lên).Đó là nó!
Có một tập lệnh để làm điều này có thể được tải xuống từ sổ đăng ký Plugin GIMP. Nó được gọi là:
Di chuyển lớp đến (tải xuống) .
Di chuyển tập lệnh vào %USERPROFILE\.gimp-2.8\scripts
thư mục trên Windows, ~/Library/Application Support/GIMP/2.8/scripts
trên OS X hoặc ~/.gimp-2.8/scripts
trên Linux. ( Hướng dẫn chính thức )
Nhấp chuột Filters
-> Script-Fu
-> Refresh scripts
.
Mục menu mới sẽ xuất hiện ở dưới cùng của Layer
menu Move to
.
%USERPROFILE%\.gimp-2.8\scripts
Windows, sau đó làm Filters
-> Script-Fu
-> Refresh Scripts
và nó sẽ có sẵn dưới dạng mục dưới cùng nhất Layer
->Move To
Tôi đang sử dụng GIMP 2.6.11.
Với các dòng Python này, lớp hoạt động có thể được di chuyển đến một vị trí tuyệt đối, như (32, 64), từ bảng điều khiển 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)
Ngoài ra, nếu bạn chỉ muốn di chuyển nội dung của lớp:
nhấp chuột phải, Layer> Transform> Offset
hoặc Shft + Ctrl + O
img=gimp.image_list()[0]
. Các _ không làm việc cho tôi.
Có một cách rất thuận tiện để thực hiện việc này có sẵn kể từ Gimp v.2.10:
nhấp đúp chuột vào lớp bạn muốn di chuyển (hoặc nhấp chuột phải vào lớp đó và chọn "Chỉnh sửa thuộc tính lớp")
hộp thoại "Chỉnh sửa thuộc tính lớp" sẽ hiển thị và ở đó bạn có thể thay đổi các giá trị X / Y theo nhu cầu của bạn
Đơn giản là dễ dàng như thế! :)
BIÊN TẬP:
Như @Michael đã hỏi về nó trong phần bình luận cho câu trả lời của tôi, tôi đang thêm một tập lệnh sẽ di chuyển TẤT CẢ các lớp hình ảnh bằng cách bù x, y được chỉ định.
Để làm cho nó hoạt động, bạn cần tạo một tệp trong thư mục Gimp script (một số tài liệu tham khảo cho điều này nếu bạn cần nó: hoặc ) với nội dung sau:
; 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/")
Nếu bạn làm đúng, bạn sẽ tìm thấy một lệnh mới trong menu "Lớp" có tên là "Di chuyển tất cả các lớp ...", khởi chạy nó và một hộp thoại sẽ hiển thị cho phép bạn quyết định độ lệch X và Y. Đó là nó.