मैं Gimp में कैनवास के भीतर एक विशिष्ट XY स्थिति में एक परत को कैसे स्थानांतरित करूं?
वर्तमान में, एक ही रास्ता मुझे मिल सकता है वह सिर्फ गाइड और / या माउस की स्थिति के साथ इसे नेत्रगोलक करना है। मैं सटीक X और Y निर्देशांक निर्दिष्ट करना चाहता हूं।
मैं Gimp में कैनवास के भीतर एक विशिष्ट XY स्थिति में एक परत को कैसे स्थानांतरित करूं?
वर्तमान में, एक ही रास्ता मुझे मिल सकता है वह सिर्फ गाइड और / या माउस की स्थिति के साथ इसे नेत्रगोलक करना है। मैं सटीक X और Y निर्देशांक निर्दिष्ट करना चाहता हूं।
जवाबों:
मुझे डर है कि जिम्प इसमें शामिल नहीं है क्योंकि यह थकाऊ है। जब आप डिजाइन कर रहे हैं तो तत्वों को संरेखित करने का यह उचित तरीका नहीं है, हालांकि मैं मानता हूं कि कभी-कभी यह शॉर्ट-कट के रूप में उपयोगी होता है। वैसे भी, गाइड के साथ सबसे अच्छा (सही) दृष्टिकोण है:
ए) चरण 1 - गाइड बनाएं
वैकल्पिक रूप से, आप शासकों से खींचने वाले गाइड भी बना सकते हैं:
बी) चरण 2 - कैनवास को स्थानांतरित करें
आप मूविंग टूल का उपयोग कर सकते हैं।
डिजाइन सिद्धांत में से एक यह है कि आपके पास अपने पूरे प्रोजेक्ट में चीजें संरेखित होनी चाहिए। संरेखण (गाइड) की संख्या को कम करने से आपको एक क्लीनर डिज़ाइन प्राप्त करने में मदद मिलती है। मुझे लगता है यही कारण है कि जिम्प में सटीक निर्देशांक निर्दिष्ट करने के लिए एक उपकरण शामिल नहीं है। यदि आप इस डिजाइन सिद्धांत का पालन करना चाहते हैं, तो सटीक निर्देशांक एक-एक करके केवल एक कठिन श्रम बन जाता है।
Relative to
Image
।Offset
फ़ील्ड में X दर्ज करें ।Distribute
/ (बायाँ तीर) पर क्लिक करें ।Offset
मैदान में Y दर्ज करें ।Distribute
/ (ऊपर तीर) पर क्लिक करें ।बस!
ऐसा करने के लिए एक स्क्रिप्ट है जिसे GIMP प्लगइन रजिस्ट्री से डाउनलोड किया जा सकता है। यह कहा जाता है:
लेयर टू (डाउनलोड) को स्थानांतरित करें ।
%USERPROFILE\.gimp-2.8\scripts
विंडोज पर निर्देशिका पर, ~/Library/Application Support/GIMP/2.8/scripts
ओएस एक्स ~/.gimp-2.8/scripts
पर या लिनक्स पर स्क्रिप्ट को स्थानांतरित करें । ( आधिकारिक निर्देश )
क्लिक Filters
-> Script-Fu
-> Refresh scripts
।
नए मेनू आइटम के नीचे दिखाई देगा Layer
मेनू Move to
।
%USERPROFILE%\.gimp-2.8\scripts
करना होगा और उसे विंडोज पर डालना होगा , फिर करें Filters
-> Script-Fu
-> Refresh Scripts
और यह सबसे नीचे की तरह उपलब्ध होगा Layer
->Move To
मैं GIMP 2.6.11 का उपयोग कर रहा हूं।
अजगर की इन पंक्तियों के साथ सक्रिय परत को पूर्ण स्थिति में ले जाया जा सकता है, जैसे (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 के बाद से यह उपलब्ध करने का एक बहुत ही सुविधाजनक तरीका है:
उस लेयर पर डबल क्लिक करें जिसे आप स्थानांतरित करना चाहते हैं (या उस पर राइट क्लिक करें और "एडिट लेयर्स एट्रिब्यूट्स" का चयन करें)
"एडिट लेयर एट्रिब्यूट्स" संवाद दिखाई देगा और वहां आप अपनी आवश्यकताओं के लिए एक्स / वाई ऑफसेट बदल सकते हैं
बस इतना आसान है! :)
संपादित करें:
जैसा कि @Michael ने अपने जवाब में इसके बारे में मुझसे पूछा था, मैं एक स्क्रिप्ट जोड़ रहा हूं, जो सभी इमेज लेयर्स को निर्दिष्ट x, y offets द्वारा स्थानांतरित कर देगी।
इसे काम करने के लिए आपको जिम्प स्क्रिप्ट फ़ोल्डर में एक फ़ाइल बनाने की आवश्यकता है (इसके लिए कुछ संदर्भ यदि आपको इसकी आवश्यकता है: या निम्नलिखित के साथ):
; 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/")
यदि आप इसे सही करते हैं, तो आपको "लेयर" मेनू में एक नया कमांड मिलेगा, जिसे "सभी लेयर्स ले जाएँ ..." कहा जाता है, इसे लॉन्च करें और एक डायल आपको एक्स और वाई ऑफ़सेट्स को तय करने देगा। बस।