Inkscape में, एक ही समय में दस्तावेज़ और उसकी सामग्री दोनों का आकार बदलें


25

मैं कुछ ऐसा करने के लिए संघर्ष कर रहा हूं जो कि बहुत ही बुनियादी होगा:

Inkscape में, मैं उसी समय दस्तावेज़ और उसकी सामग्री (अर्थात चित्र) का आकार कैसे बदल सकता हूँ?

थोड़ा सा संदर्भ: मैं वास्तविक चित्रों का स्पष्ट रूप से वर्णन किए बिना द नॉन प्रोजेक्ट (वे आमतौर पर 100x100px डॉक्स) से एसवीजी दस्तावेजों की एक बड़ी संख्या का आकार बदलना चाहते हैं।

NB: अगर वहाँ एक कमांड लाइन समाधान है, मैं उस के साथ भी काम कर सकते हैं!


मुझे आपके अंतिम लक्ष्य पर यकीन नहीं है, लेकिन AFAIK, दस्तावेज़ क्षेत्र मुद्रण से कुछ हद तक अलग है, जहाँ आपके पास केवल दस्तावेज़ क्षेत्र प्रिंट करने का विकल्प होता है। हालाँकि, आप केवल ऑब्जेक्ट क्षेत्र को भी प्रिंट कर सकते हैं, ताकि आपकी बाधा के आसपास पहुंचने का एक तरीका हो।
DA01

@ DA01 ठीक है, मुझे लगता है कि जब आप बिटमैप (जो मैं कर रहा हूं) को निर्यात करते समय दस्तावेज़ का बहुत उपयोगी है।
१ien:५२ पर जुलिएन_सी

वैसे, क्या किसी ऑब्जेक्ट को आकार देने का एक तरीका है जिसमें खींचने वाले कोनों को शामिल नहीं किया गया है, लेकिन आप स्पष्ट रूप से आकार कहां निर्दिष्ट करेंगे? यह वह चीज हो सकती है जो मैं :) के बाद हूँ
julien_c

1
फिर भी यह एक मनमाना विकल्प है। आप अपने निर्यात 'ज़ोन' के रूप में आसानी से एक युक्त बॉक्स बना सकते हैं। वास्तव में, यह है कि मैं आमतौर पर यह कैसे करना पसंद करता हूं। आकार बदलने के लिए, आप अपनी वस्तुओं का चयन कर सकते हैं और फिर a) शीर्ष पर स्थित स्थिति पट्टी का उपयोग कर सकते हैं और अपने आकार परिवर्तन में टाइप कर सकते हैं या b) OBJECT> TRANSFORM पर जाएँ और ट्रांसफ़ॉर्म फूस में मान दर्ज करें
DA01

@julien_c: मुझे लगता है यहां मुद्दा यह है कि वस्तुओं सीधे वेक्टर आर्ट हैं और कोई आकार असल आप एक रेखापुंज डिवाइस (या फ़ाइल) के लिए उन्हें उत्पादन जब तक। उनका आकार (इंच, पिक्सेल, हाथ), अप्रासंगिक है।
होरिटो

जवाबों:


24

आपने उल्लेख नहीं किया है कि आप क्या ओएस चला रहे हैं। मैं उबंटू का उपयोग कर रहा हूं, और मैं librsvg2 का सफलतापूर्वक उपयोग करने में सक्षम हूं।

यदि आपके पास उबंटू तक पहुंच है, तो यहां आप क्या कर सकते हैं। सबसे पहले, librsvg2 स्थापित करें:

sudo apt-get install librsvg2-bin

फिर, cdउस निर्देशिका के लिए जिसमें आपका SVGs है (सुनिश्चित करें कि इसमें केवल SVGs हैं!) और निम्न जैसे कमांड का उपयोग करें:

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/new.svg/')"
    rsvg-convert "$old" -w 160 -h 160 -f svg -o "$new"
done

यह 200x 200 आयामों के साथ SVGs का एक नया बैच बनाएगा, और इसे "मूल-फ़ाइल-name.new.svg" के रूप में सहेजा जाएगा।

आयामों की गणना कुछ भ्रामक है। एसवीजी को एसवीजी में परिवर्तित करने के लिए, आपको थोड़ा गणित करने की आवश्यकता है। Rsvg- कन्वर्ट यूज़ pt में "ऊँचाई" और "चौड़ाई" विकल्प, ऐसे मामलों में px नहीं, इसलिए 80 का उपयोग करें यदि आप 100px, 120 चाहते हैं तो 150px, और इसी तरह।

आप PNGs को आउटपुट करने के लिए rsvg-Convert का भी उपयोग कर सकते हैं। यह ImageMagick की तुलना में फ़ाइल को रैस्टराइज़ करने में बहुत बेहतर है, कम से कम मेरे अनुभव में। सूचना है कि आप को बदलने की जरूरत -fके लिए png, आप से पैटर्न को बचाने उत्पादन को बदलने की जरूरत 's/svg$/new.svg/'के लिए 's/svg$/png/', और आप चौड़ाई और ऊंचाई है कि आप पिक्सेल मूल्यों के रूप में दर्ज करते हैं।

for old in *; do
    new="$(echo "$old" | sed -e 's/svg$/png/')"
    rsvg-convert "$old" -w 200 -h 200 -f png -o "$new"
done

वैसे, मैं सिर्फ यह मान रहा हूं कि आपको बड़ी संख्या में SVG में बैच मोड में ऐसा करने की आवश्यकता है। यदि नहीं, तो आप अभी भी rsvg-convertइस तरह का उपयोग कर सकते हैं: rsvg-convert noun_project_1576.svg -w 320 -h 160 -f svg -o noun_project_1576-skewed.svgजो "noun_project_1576" नाम की एक स्रोत फ़ाइल लेगा और इसे 200px तक 400px होने के लिए तिरछा करेगा और इसे "noun_project_1576-skewed" नाम देगा।
आनंद महतो

@julien_c, बस निम्नलिखित: क्या आपने इस सुझाव की कोशिश की और इसके साथ कोई भाग्य है?
आनंद महतो

कॉपी करें और टर्मिनल में कोड पेस्ट करें लेकिन sed: -e अभिव्यक्ति # 1, char 14: unterminted की कमांड मिसिंग तर्क के लिए -o ... कोई भी सुझाव
raphie

मैंने `को बदल दिया 'और अब मुझे फ़ाइल को सेव करने में एरर आ रही है: echo svgfile.svg | sed -e' s / svg $ / 2.svg '
raphie

महान - यह तब और भी बेहतर होगा जब librsvgपाठ का बग ठीक हो जाए ...
जॉइस

7

Inkscape में वर्तमान में ऐसा करने का कोई मूल तरीका नहीं है। एकमात्र तरीका सामग्री और दस्तावेज़ को अलग-अलग आकार देना है।


2

हालांकि इसे करने के कुछ तरीके हैं - जैसा कि यहां बताया गया है - एक तरीका जो वास्तव में अच्छी तरह से काम कर सकता है वह है ए का उपयोग करना viewBox। आप बस SVG टैग की सामग्री को संशोधित करते हैं जैसे:

<svg
 width="1280"
 height="800"
 viewBox="0 0 1280 800">
    <!-- More markup... --!>
</svg>

यह क्या viewBoxकरता है यह दस्तावेज़ के लिए एक आंतरिक समन्वय प्रणाली को परिभाषित करता है। फिर आप आसानी से widthऔर heightआवश्यक रूप से विशेषताओं को संशोधित करके दस्तावेज़ को आसानी से माप सकते हैं ।

ध्यान दें कि कुछ कमियां हैं, हालांकि। एक बात के लिए, विशिष्ट रूप से यदि आप किसी तरह से सीधे अपने मार्कअप पृष्ठ पर एसवीजी दस्तावेज़ को शामिल करते हैं, तो केवल कुछ संदर्भों में यह काम करता है। इसके <img>साथ टैग का उपयोग करने से अप्रत्याशित परिणाम प्राप्त हो सकते हैं या नहीं भी हो सकते हैं। आपको यह पता लगाने के लिए अपने स्वयं के कुछ शोध करने होंगे कि यह कैसे करना सबसे अच्छा है।


2
यह मेरे लिए काम नहीं करता है, और मुझे समझ नहीं आता कि क्यों। यदि मैं चौड़ाई और ऊंचाई को संपादित करता हूं, लेकिन व्यूबॉक्स को छोड़ देता है, तो: जब क्रोम कच्चे svg फ़ाइल को प्रस्तुत करता है, तो यह सामग्री का केवल एक छोटा हिस्सा दिखाता है। जब इंक्सस्केप इसे प्रस्तुत करता है, तो यह संपूर्ण सामग्री दिखाता है, लेकिन इसका पृष्ठ की तुलना में बहुत बड़ा है, जो वही छोटा (शीर्ष बाएं) भाग है जिसे क्रोम ने दिखाया था। तो, पूरी तरह से: सामग्री व्यूबॉक्स निर्देशांक के अनुसार स्केलिंग नहीं है। मेरे एसवीजी में कई बच्चे svg तत्व हैं, लेकिन वे सभी (दृश्य मान) निर्देशांक के आधार पर रूपांतरित हैं।
सीपीबीएल

Inkscape 0.92.3, फ़ायरफ़ॉक्स 66 और क्रोमियम 73 में मेरे लिए काम किया।
सोकोवी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.