Bagaimana cara memindahkan layer ke posisi XY tertentu dalam kanvas di Gimp?
Saat ini, satu-satunya cara yang bisa saya temukan adalah hanya melihatnya dengan panduan dan / atau posisi mouse. Saya ingin menentukan koordinat X dan Y yang tepat.
Saya khawatir Gimp tidak memasukkannya karena membosankan. Ini bukan cara yang tepat untuk menyelaraskan elemen ketika Anda mendesain, meskipun saya menyadari bahwa kadang-kadang berguna sebagai jalan pintas. Bagaimanapun, pendekatan terbaik (benar) adalah dengan panduan:
A) Langkah 1 - Buat panduan
Pergi ke Image-> Guide-> New Guide
Tentukan jika Anda ingin dan panduan horisontal atau vertikal
Tentukan jumlah piksel
Ulangi prosedur untuk Panduan horizontal atau vertikal lainnya (Anda juga dapat melakukan lebih banyak panduan untuk menentukan lebar dan tinggi)
Atau, Anda juga dapat membuat panduan yang diseret dari penggaris:
Seret ke bawah (mulai dari penggaris atas) panduan ke koordinat Y yang Anda inginkan.
Seret ke bawah (mulai dari penggaris kiri) panduan ke koordinat X yang Anda inginkan.
B) Langkah 2 - Pindahkan kanvas
Anda dapat menggunakan alat bergerak.
Pilih Layer Anda
Pergi ke Alat -> Transform Alat -> Pindahkan
Seret Layer ke panduan. Gimp akan membantu Anda dengan piksel yang tepat.
Salah satu prinsip desain adalah Anda harus menyelaraskan seluruh proyek Anda. Mengurangi jumlah pelurusan (panduan) membantu Anda mendapatkan desain yang lebih bersih. Saya pikir ini sebabnya mengapa gimp tidak menyertakan alat untuk menentukan koordinat yang tepat. Jika Anda ingin mengikuti prinsip desain ini, menentukan koordinat yang tepat satu per satu menjadi pekerjaan yang membosankan.
Perhatikan bahwa tampaknya Anda hanya dapat memilih layer yang terlihat paling atas - yaitu, seseorang harus menyembunyikan layer di atas layer yang akan diluruskan (gimp 2.8.16).
Skippy le Grand Gourou
Apakah ini menggunakan satuan piksel? Tampaknya untuk memindahkan gambar saya jauh lebih daripada yang saya harapkan.
palswim
@ palswim Bagi saya ini berhasil ketika saya mengklik grup tombol paling atas (Rata) daripada grup paling bawah (Distribusikan). Ya, diukur dalam piksel (setidaknya dalam konfigurasi saya).
Rodrigo
20
Ada skrip untuk melakukan ini yang dapat diunduh dari registri Plugin GIMP. Itu disebut:
Pindahkan skrip ke %USERPROFILE\.gimp-2.8\scriptsdirektori di Windows, ~/Library/Application Support/GIMP/2.8/scriptsdi OS X atau ~/.gimp-2.8/scriptsdi Linux. ( Instruksi resmi )
Klik Filters-> Script-Fu-> Refresh scripts.
Item menu baru akan muncul di bagian bawah Layermenu Move to.
Hampir sempurna! Akan lebih baik jika dialog parameter menggunakan koordinat layer saat ini sebagai nilai default.
Oliver Giesen
4
Anda perlu mengunduh file .scm itu dan memasukkannya ke %USERPROFILE%\.gimp-2.8\scriptsWindows, lalu lakukan Filters-> Script-Fu-> Refresh Scriptsdan itu akan tersedia sebagai item terbawah Layer->Move To
DarkWalker
3
Jawaban Davids melakukan pekerjaan tanpa naskah.
Michael S.
1
TIDAK bekerja untuk offset negatif. dan UX buruk (tidak menyimpan nilai terakhir, dll).
Loda
11
Saya menggunakan GIMP 2.6.11.
Dengan garis-garis Python ini, lapisan aktif dapat dipindahkan ke posisi absolut, seperti (32, 64), dari konsol Python:
Ini menyebabkan piksel di dalam lapisan bergerak, bukan lapisan itu sendiri - saya perlu memindahkan lapisan yang sebenarnya. Apa yang Anda sarankan dapat berfungsi jika lapisannya memiliki ukuran yang sama dengan kanvas, atau setidaknya cukup besar untuk tidak memotong piksel yang tidak transparan di dalam lapisan.
Scott
@Scott: Saya mengerti - maaf saya tidak menemukan cara yang lebih mudah, tapi setidaknya saya menemukan cara untuk memindahkan layer ke posisi absolut dengan beberapa baris Python.
Nicolas Kaiser
2
Baris tiga dari kode Anda seharusnya img=gimp.image_list()[0]. _ Tidak bekerja untuk saya.
apple16
3
Ada cara yang sangat mudah untuk melakukan ini sejak Gimp v.2.10:
klik dua kali pada layer yang ingin Anda pindahkan (atau klik kanan padanya dan pilih "Edit Attributes Layer")
dialog "Edit Layer Attributes" akan muncul dan di sana Anda dapat mengubah offset X / Y sesuai kebutuhan Anda
Cukup mudah seperti itu! :)
SUNTING:
Ketika @Michael bertanya tentang hal itu dalam komentarnya untuk jawaban saya, saya menambahkan skrip yang akan memindahkan SEMUA lapisan gambar dengan x, y offset yang ditentukan.
Untuk membuatnya berfungsi, Anda perlu membuat file di folder skrip Gimp (beberapa referensi untuk ini jika Anda membutuhkannya: atau ) dengan konten berikut:
; 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/")
Jika Anda melakukannya dengan benar, Anda akan menemukan perintah baru di menu "Lapisan" yang disebut "Pindahkan semua lapisan ...", luncurkan dan sebuah dialog akan muncul memungkinkan Anda untuk menentukan offset X dan Y. Itu dia.
Adakah cara untuk membuat ini sedikit lebih cepat ketika Anda memiliki banyak lapisan untuk dipindahkan (seperti dalam ratusan)? Akan lebih bagus jika benda ini bisa merapat jadi saya tidak harus membawanya ke setiap lapisan!
Michael
1
@Michael: Yah, saya kira Anda harus pergi dengan beberapa skrip dalam hal itu, mirip dengan Nicolas Kaiser menyarankan solusi tetapi mengulang pada lapisan gambar ... Saya baru saja mengedit jawaban saya untuk menunjukkan kepada Anda bagaimana, lihat. (Saya akan membuat jawaban terpisah untuk itu tetapi OP meminta secara khusus untuk memindahkan SATU lapisan, tidak semuanya. Jika Anda mengajukan pertanyaan baru untuk ini, saya akan dengan senang hati menjawab di sana menambahkan beberapa tangkapan layar dan yang lainnya; - D) Cheers
Jawaban:
Saya khawatir Gimp tidak memasukkannya karena membosankan. Ini bukan cara yang tepat untuk menyelaraskan elemen ketika Anda mendesain, meskipun saya menyadari bahwa kadang-kadang berguna sebagai jalan pintas. Bagaimanapun, pendekatan terbaik (benar) adalah dengan panduan:
A) Langkah 1 - Buat panduan
Atau, Anda juga dapat membuat panduan yang diseret dari penggaris:
B) Langkah 2 - Pindahkan kanvas
Anda dapat menggunakan alat bergerak.
Salah satu prinsip desain adalah Anda harus menyelaraskan seluruh proyek Anda. Mengurangi jumlah pelurusan (panduan) membantu Anda mendapatkan desain yang lebih bersih. Saya pikir ini sebabnya mengapa gimp tidak menyertakan alat untuk menentukan koordinat yang tepat. Jika Anda ingin mengikuti prinsip desain ini, menentukan koordinat yang tepat satu per satu menjadi pekerjaan yang membosankan.
sumber
Relative to
Image
.Offset
bidang.Distribute
/ (panah kiri).Offset
bidang.Distribute
/ (panah atas).Itu dia!
sumber
Ada skrip untuk melakukan ini yang dapat diunduh dari registri Plugin GIMP. Itu disebut:
Pindahkan Lapisan Ke (unduh) .
Untuk memasang:
Pindahkan skrip ke
%USERPROFILE\.gimp-2.8\scripts
direktori di Windows,~/Library/Application Support/GIMP/2.8/scripts
di OS X atau~/.gimp-2.8/scripts
di Linux. ( Instruksi resmi )Klik
Filters
->Script-Fu
->Refresh scripts
.Item menu baru akan muncul di bagian bawah
Layer
menuMove to
.sumber
%USERPROFILE%\.gimp-2.8\scripts
Windows, lalu lakukanFilters
->Script-Fu
->Refresh Scripts
dan itu akan tersedia sebagai item terbawahLayer
->Move To
Saya menggunakan GIMP 2.6.11.
Dengan garis-garis Python ini, lapisan aktif dapat dipindahkan ke posisi absolut, seperti (32, 64), dari konsol Python:
Atau, jika Anda hanya ingin memindahkan konten layer:
klik kanan, Layer> Transform> Offset
atau Shft + Ctrl + O
sumber
img=gimp.image_list()[0]
. _ Tidak bekerja untuk saya.Ada cara yang sangat mudah untuk melakukan ini sejak Gimp v.2.10:
klik dua kali pada layer yang ingin Anda pindahkan (atau klik kanan padanya dan pilih "Edit Attributes Layer")
dialog "Edit Layer Attributes" akan muncul dan di sana Anda dapat mengubah offset X / Y sesuai kebutuhan Anda
Cukup mudah seperti itu! :)
SUNTING:
Ketika @Michael bertanya tentang hal itu dalam komentarnya untuk jawaban saya, saya menambahkan skrip yang akan memindahkan SEMUA lapisan gambar dengan x, y offset yang ditentukan.
Untuk membuatnya berfungsi, Anda perlu membuat file di folder skrip Gimp (beberapa referensi untuk ini jika Anda membutuhkannya: atau ) dengan konten berikut:
Jika Anda melakukannya dengan benar, Anda akan menemukan perintah baru di menu "Lapisan" yang disebut "Pindahkan semua lapisan ...", luncurkan dan sebuah dialog akan muncul memungkinkan Anda untuk menentukan offset X dan Y. Itu dia.
sumber