मैं कमांड लाइन के माध्यम से एसवीजी कैसे माप सकता हूं?


17

एक एसवीजी में ये गुण होते हैं, जो इसका आकार निर्धारित करते हैं:

width="146.91299pt"
height="78.079002pt"
viewBox="0 0 146.913 78.079"

मैं दिए गए एसवीजी को 400ptपहलू अनुपात को तोड़ने के बिना कमांड लाइन के साथ स्केल करना चाहता हूं । इसका मतलब है, उपरोक्त तीन मानों को सही ढंग से बदलना होगा और निम्नलिखित svg कोड में सभी बिंदुओं को बदलना होगा । मैं केवल कैनवास आकार नहीं बदलना चाहता, लेकिन पूरे svg छवि का आकार। और मैं इसे GUI / हाथ से नहीं करना चाहता, लेकिन मैं इसे CLI के साथ करना चाहता हूं।

मैं दिए गए चौड़ाई में कमांड लाइन द्वारा स्वचालित रूप से एक SVG स्केल कैसे कर सकता हूँ?

कारण: अगर छवि बहुत छोटी है, तो विकिपीडिया का पूर्वावलोकन बुरा लगता है। इस छवि को एक उदाहरण के रूप में देखें ।

मैं इस कार्य को इंकस्केप-जीयूआई के साथ कैसे करूंगा

  1. Shift + Ctrl + M (रूपांतरण)
  2. स्केल ("आनुपातिक पैमाने पर जांच करें")
  3. चौड़ाई दर्ज करें
  4. Shift + Ctrl + D (दस्तावेज़ गुण)
  5. चयन करने के लिए फ़िट पृष्ठ

अब मैं ऐसा करने के लिए एक स्वचालित सीएलआई-तरीका चाहता हूं।

वैसे, अक्सस्केप बस लागू किया जाता है

<g transform="matrix(1.6838397,0,0,1.6838397,-3.3543029,-3.3542794)"
 id="surface0">

पूरी छवि के लिए।


आप किस ओएस का उपयोग करते हैं?
टेराडन

उबंटू 10.04.4 एलटीएस (मैं इसे अपडेट करने जा रहा हूं ...)
मार्टिन थोमा

एसवीजी फाइलें सिर्फ पाठ फाइलें हैं। आप फ़ाइल को संपादित करने और बदलने में सक्षम हो सकता है width, heightऔर viewBoxकी तरह कुछ करने के लिए मान width="100%" height="100%" viewBox="0 0 400 212.58569"
18

मुझे पता है कि वे केवल पाठ फ़ाइलें हैं। लेकिन अगर मैं केवल इन मूल्यों को संपादित करता हूं, तो छवि का आकार नहीं बदलता है। केवल कैनवास का आकार बदलता है। हाथ से संपादन करना कोई विकल्प नहीं है, मैंने स्पष्ट रूप से कहा कि मैं इसे अपने आप बदलना चाहता हूं।
मार्टिन थोमा

हां, मुझे पता है कि आपने इसे करने के लिए एक स्वचालित तरीका पूछा था, लेकिन यह सोचा कि यदि आप यह पता लगा सकते हैं कि क्या बदलना है, पाठ-वार, तो आप उपलब्ध टेक्स्ट-संपादन टूल में से किसी एक का उपयोग करके इसे स्वचालित कर सकते हैं (जैसे के रूप में sedमें @ terdon का जवाब)। एक समस्या जो आप चला सकते हैं, वह यह है कि मूल्यों को किसी भी अन्य .svg फ़ाइलों के साथ अलग-अलग होना चाहिए जो आप एक ही काम करना चाहते हैं।
21

जवाबों:


15

rsvg-convertlibrsvg2-binपैकेज से svg का आकार बदल सकता है।

पूर्ण निर्देशों के लिए यह उत्तर देखें ।


4
rsvg-convert -a -w 500 -f svg Vector-triangle-inequality.svg -o Result.svgकाम किया। लेकिन rsvg- कन्वर्ट केवल आकार बदलने से अधिक करने के लिए लगता है।
मार्टिन थोमा

2
@ उत्तर, हालाँकि, जैसा कि उस उत्तर में उल्लेख किया गया है, rsvg-Convert, पॉइंट्स का उपयोग करता है, पिक्सल का नहीं। यदि आप भाग्यशाली हैं, तो आप अपने इच्छित आकार को 1.25 से विभाजित कर सकते हैं। हालाँकि, अगर आप कुछ चाहते हैं जैसे कि 24px (19.2 अंक), तो आप भाग्य से बाहर हैं, क्योंकि यह गैर-पूर्णांक को चौड़ाई या ऊंचाई के रूप में डालने के लिए तैयार नहीं है (यदि एसवीजी यह अनुमति देता है तो सुनिश्चित नहीं है)।
मैथ्यू फ्लैशेन

@MartinThoma हाँ, वास्तव में। SVG आउटपुट फ़ाइल मूल आकार से लगभग दोगुनी है। मुझे आश्चर्य है क्योंकि? पढ़ने से rsvg-convert --helpकोई सुराग नहीं मिलता है।
सर्ज स्ट्रोबंड टीटी

1
rsvg Convert, पथरीले रास्तों को उल्लिखित रास्तों में परिवर्तित करता है। आप यह नहीं चाहते हो सकता है (मुझे पता है कि मैं नहीं)
2

1
यह उपकरण बस प्रत्येक तत्व में रूपांतरित करने के लिए लगता है और वास्तव में मूल आकारों को नहीं बदलता है।
रोटा

3

यदि आप केवल एक छवि को बदलना चाहते हैं, तो इसे एक टेक्स्ट एडिटर में खोलें (उदाहरण के लिए एमएसीएस) और चौड़ाई प्रविष्टि को बदल दें।

एक गीकियर के लिए, CLI केवल दृष्टिकोण, sed का उपयोग करें:

$ sed 's/width=\"146.91299pt\"/width=\"400pt\"/' orig.svg > new.svg

हालांकि यह छवि को स्केल नहीं करेगा, केवल इसकी चौड़ाई निर्धारित करेगा।


एक बेहतर तरीका, शायद, लेकिन निश्चित रूप से एक जो कई छवियों के लिए बैच मोड में चलाया जा सकता है कमांड लाइन से इनस्केप का उपयोग कर रहा है:

$ inkscape -z -e out.png -w 400 -h 400 in.svg

कई फ़ाइलों के लिए (यह मानते हुए कि आप उन सभी को समान चौड़ाई देना चाहते हैं), निम्न कार्य करें। इसके लिए पीएनजी में रूपांतरण की आवश्यकता होती है और मान लिया जाता है कि आपके फ़ाइलनाम में कोई स्थान नहीं है:

$ for n in $(ls *svg | sed 's/.svg//'); do inkscape -z -e $n.png -w 400 -h 400 $n.svg; done

ImageMagick कन्वर्ट मेरी पहली पसंद थी, लेकिन यह svgs स्केलिंग के दौरान टूटने लगता है।


7
आपका inkscape-कमांड एक PNG में परिणाम देता है, लेकिन मुझे एक SVG चाहिए। आपका svg कमांड केवल कैनवास का आकार बदलता है, लेकिन छवि का आकार नहीं। आप बस एक पाठ संपादक का उपयोग नहीं कर सकते हैं और केवल उन मूल्यों को बदल सकते हैं जो मैंने ऊपर उल्लेख किया है। मुझे लगता है कि मुझे सवाल स्पष्ट करना होगा।
मार्टिन थोमा

आप भी एक टैग को जोड़ने की जरूरत है: ... "> <जी को बदलने =" पैमाने (2) "> <पथ .... /> </ छ> </ svg> एक ही कारक के साथ छवि को मापना।
स्टोके
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.