Bir katmanı Gimp'teki tuval içinde belirli bir XY konumuna nasıl taşırım?
Şu anda bulabildiğim tek yol, rehberleri ve / veya fare konumlarını göz küresi yapmak. Tam X ve Y koordinatlarını belirtmek istiyorum.
Bir katmanı Gimp'teki tuval içinde belirli bir XY konumuna nasıl taşırım?
Şu anda bulabildiğim tek yol, rehberleri ve / veya fare konumlarını göz küresi yapmak. Tam X ve Y koordinatlarını belirtmek istiyorum.
Yanıtlar:
Korkarım Gimp bunu içermez çünkü sıkıcıdır. Tasarım yaparken öğeleri hizalamak uygun bir yöntem değildir, ancak bazen kısa yol olarak kullanılabileceğini biliyorum. Neyse, en iyi (doğru) yaklaşım rehberlerledir:
A) Adım 1 - Kılavuzları oluşturun
Alternatif olarak, cetvellerden sürükleyerek kılavuzlar da oluşturabilirsiniz:
B) Adım 2 - Tuvali hareket ettir
Hareketli aracı kullanabilirsiniz.
Tasarım ilkelerinden biri, tüm projenizde bazı şeylerin aynı hizada olması gerektiğidir. Hizalama sayısının (kılavuzların) azaltılması, daha temiz bir tasarım elde etmenize yardımcı olur. Bu yüzden gimp'in kesin koordinatları belirleyen bir araç içermediğini düşünüyorum. Kesin koordinatları tek tek belirlemek bu tasarım prensibini takip etmek istiyorsanız, sadece bir sıkıcı emek haline gelir.
Relative to
Image
.Offset
Alana X girin .Distribute
/ (Sol ok) düğmesine tıklayın .Offset
Alana Y girin .Distribute
/ (Yukarı ok) düğmesine tıklayın .Bu kadar!
Bunu yapmak için GIMP Eklentisi kayıt defterinden indirebileceğiniz bir komut dosyası var. Denir:
Komut dosyasını %USERPROFILE\.gimp-2.8\scripts
Windows, ~/Library/Application Support/GIMP/2.8/scripts
OS X veya ~/.gimp-2.8/scripts
Linux'ta dizine taşıyın . ( Resmi talimatlar )
Tıklamalar Filters
-> Script-Fu
-> Refresh scripts
.
Yeni menü öğesi altındaki görünecektir Layer
menü Move to
.
%USERPROFILE%\.gimp-2.8\scripts
, sonra Filters
-> Script-Fu
-> yapın Refresh Scripts
ve en düşük madde olarak mevcut olacak Layer
->Move To
GIMP 2.6.11 kullanıyorum.
Bu Python satırlarıyla, aktif katman Python konsolundan (32, 64) gibi mutlak bir konuma taşınabilir:
>>> 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)
Alternatif olarak, yalnızca katmanın içeriğini taşımak istiyorsanız:
sağ tıklayın, Katman> Dönüştür> Ofset
veya Shft + Ctrl + O
img=gimp.image_list()[0]
. _ Benim için işe yaramadı.
Gimp v.2.10’dan bu yana bunu yapmanın çok uygun bir yolu var:
Taşımak istediğiniz katmanı çift tıklayın (veya sağ tıklayın ve "Katman Özelliklerini Düzenle" yi seçin)
"Katman Özelliklerini Düzenle" iletişim kutusu görünecek ve orada X / Y ofsetlerini ihtiyaçlarınıza göre değiştirebilirsiniz
Böyle basitçe kolay! :)
DÜZENLE:
@Michael cevabımdaki yorumunda sorduğu gibi, TÜM görüntü katmanlarını belirtilen x, y ofsetlerine göre hareket ettirecek bir komut dosyası ekliyorum.
Çalışması için Gimp script klasöründe (buna ihtiyaç duyarsanız bazı referanslar: veya ) aşağıdaki içeriği içeren bir dosya oluşturmanız gerekir :
; 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/")
Doğru yaparsanız, "Tüm katmanları taşı ..." adlı "Katman" menüsünde yeni bir komut bulacaksınız, X ve Y ofsetlerine karar vermenize izin veren bir iletişim kutusu açılacaktır. Bu kadar.