मैक ओएस एक्स पर एसवीजी को पीएनजी में परिवर्तित करने के लिए कमांड-लाइन आवेदन


167

क्या कोई कमांड-लाइन प्रोग्राम हैं जो SVG को PNG में बदल सकते हैं, जो Mac OS X पर चलते हैं?

संपादित करें : Dylan B का ImageMagick के साथ अच्छा जवाब था। संदर्भ के लिए, MacPorts का उपयोग करते हुए Mac OS X पर SVG समर्थन के साथ ImageMagick स्थापित करने के लिए

port install imagemagick +rsvg

2
मुझे एक रास्ता मिल गया अगर आपके पास Google Chrome है ... और किसी भी अन्य चीजों को स्थापित करने की आवश्यकता नहीं है: superuser.com/questions/134679/…
nopole

cairosvg.org python3 के लिए काम करता है और लगता है कि कोई समस्या नहीं है। pip3 install cairosvg
Jayizzo

जवाबों:


233

या कुछ भी स्थापित किए बिना:

qlmanage -t -s 1000 -o . picture.svg 

यह पिक्चर का उत्पादन करेगा। svg.png जो कि 1000 पिक्सेल चौड़ा है।

मैंने इसका परीक्षण केवल OS X 10.6.3 पर किया है।


38
दुर्भाग्य से यह एक वर्ग के लिए छवियों क्लिप।
मार्टिअन पीटरर्स

7
आह, qlmanage -tत्वरित लुक (खोजक, आदि) द्वारा उपयोग किए गए थंबनेल देता है। चतुर विचार। दुर्भाग्य से, ये थंबनेल छोटी गाड़ी हो सकती हैं, खासकर जब पाठ शामिल हो।
श्रीवत्सआर

7
यह 1st क्वाड्रंट में svg फाइल के साथ इमेज तैयार करता है। ऑटो फ़सल नहीं करता। संज्ञा परियोजना से फ़ाइलों को परिवर्तित करने की कोशिश कर रहा है - काश यह काम करता।
एलेक्स कुक

7
यह समाधान पारदर्शिता को ध्यान में रखने में विफल रहता है। rsvg-convert@ आहती के उत्तर में उपकरण ने मेरे लिए पहले काम किया।
बेनआर

3
-sविकल्प के बाद चौड़ाई और ऊंचाई दोनों मापदंडों को रखना मेरे लिए काम नहीं करता था। अभी भी यह एक वर्ग के लिए फसलों। अधिक निराश!
एरिक वैन डेर नीट

107

मैंने पाया कि मेरे लिए नौकरी का सबसे अच्छा साधन है rsvg-convert

इसे काढ़ा में मिलाया जा सकता है brew install librsvgऔर इसका उपयोग इस तरह किया जाता है:

rsvg-convert -h 32 icon.svg > icon-32.png

(यह उदाहरण एक 32px उच्च png बनाता है। चौड़ाई स्वचालित रूप से निर्धारित की जाती है।


यह केवल वही है जिसने मेरे लिए Mavericks और commons.wikimedia.org/wiki/…
एरन अहमदिया

वास्तव में यह एक काम किया, जबकि ImageMagick की convertगलतियाँ जारी कीं और एक जटिल SVG
Brice

7
यह OS X Yosemite +1 के लिए अब तक का सबसे अच्छा समाधान है!
ग्रेग मार्टिन

यह मेरे कुछ एसवीजी के लिए असफल रहा, अजीब तरह से। qlmanageइस सवाल का जवाब उन सभी के लिए काम किया है, लेकिन एक सफेद पृष्ठभूमि, है जो मैं नहीं चाहता डाल दिया।
सूद

1
इसके साथ rsvg-convert, जिसके परिणामस्वरूप .png में सही आयाम थे, लेकिन मूल रंगों के बजाय छवि सभी काले निकले। qlmanageछवि के साथ एक वर्ग के लिए फसल है। अभी भी एक समाधान के लिए खोज :-(
एरिक वैन डेर न्यूट

43

ImageMagick एक बेहद बहुमुखी कमांड-लाइन इमेज एडिटर है, जो शायद फ़ोटोशॉप को प्रतिद्वंद्वी करेगा, अगर आप जानते हैं, तो जीयूआई। लेकिन उन लोगों को कौन चाहिए। : पी

निम्न जैसा कुछ स्थापना के बाद, .svg को .png में बदल देगा:

$ convert picture.svg picture.png

मूल .svg हटाया नहीं गया है।


यह एक तरह से में एक जीयूआई है, display
इग्नासियो वाज़क्वेज़-अब्राम्स

1
जब मैंने ImageMagick को फिंक के साथ स्थापित किया, तो मैं svg को png में नहीं बदल सका - कुछ त्रुटियां थीं। यह पता चला है कि मुझे librsvg2-bin को भी स्थापित करने की आवश्यकता है।
tst

यदि librsvg2-bin स्थापित नहीं है (जैसे OS X पर) तो यह विफल हो जाएगा। ओएस एक्स पर स्थापित होने का एक तरीका नहीं मिल सका।
जॉन शीहान

3
यह अच्छी तरह से काम नहीं करेगा यदि आप SVG का आकार बदलना चाहते हैं क्योंकि यह धुंधली छवियां बनाता है।
Behrang

3
यह सभी एसवीजी फाइलों को सही ढंग से परिवर्तित नहीं करता है; कम से कम qlmanage को छवि के सभी भाग मिले।
जोहान

28

इंकस्केप इसके साथ कमांडलाइन-इंटरफेस मेरे लिए सबसे अच्छा परिणाम का उत्पादन है:

/Applications/Inkscape.app/Contents/Resources/bin/inkscape --export-png output.png -w 1024 -h 768 input.svg

अच्छी बात यह है, आप घनत्व के साथ गड़बड़ किए बिना, परिणामस्वरूप छवि के सटीक पिक्सेल आकार को निर्दिष्ट कर सकते हैं।


यह मेरे लिए काम कर रहा है! -
Ikscape

यह एकमात्र तरीका है जिसने मेरे हाथ से लिखे गए svg को सही ढंग से प्रस्तुत किया है
ग्रिफिन

कन्वर्ट एसवीजी से अच्छी पीएनजी फाइलें उत्पन्न नहीं करता है। इंकस्केप का उपयोग करना अब तक का सबसे अच्छा तरीका है।
ol_v_er

यह मेरे लिए काम करता है, लेकिन बेहद धुंधली फाइलें बनाता है।
मार्सिन

3
मुझे फाइलों को खोजने की समस्या थी इसलिए इसे चलायाinkscape $(pwd)/logo.svg --export-png $(pwd)/logo.png
आंद्रेई

16

ठीक है, मुझे मैक पर ऐसा करने का एक सरल तरीका मिल गया है यदि आपके पास Google क्रोम है।

एक वाक्य में, यह svgएक वेबपेज में छवि को देखना होगा (एक htmlफ़ाइल में होना चाहिए ), छवि पर राइट क्लिक करें और "कॉपी इमेज" चुनें और पूर्वावलोकन ऐप पर पेस्ट करें।

कदम:

  1. svgअपनी हार्ड ड्राइव में फ़ाइल डाउनलोड या कहें,somefile.svg
  2. अब, उसी फ़ोल्डर में, बस एक HTML फ़ाइल बनाएं tmp.htmlजिसमें यह रेखा है:<img src="somefile.svg">
  3. अब, Google Chrome में उस HTML फ़ाइल को खोलें
  4. आपको छवि देखनी चाहिए। अब बस छवि पर राइट क्लिक करें और "कॉपी इमेज" चुनें
  5. Mac के पूर्वावलोकन ऐप पर जाएं, और चुनें, "File -> New from Clipboard"
  6. अब File -> Saveफाइल और आपके पास pngफाइल है। (या अन्य फ़ाइल प्रकार)।

यह मैक ओएस एक्स एल कैपिटन पर वर्तमान क्रोम (संस्करण 48.0) पर परीक्षण किया गया है।

अपडेट : मुझे यकीन नहीं है कि यह Google क्रोम द्वारा लगाए गए कुछ प्रतिबंधों के कारण है। मैं सिर्फ क्रोम 58.0 का उपयोग करके SVG फ़ाइल की कोशिश करता हूं, और मुझे ऊपर की विधि से एक छोटी छवि मिलती है। यदि आप इस मामले को भी देखते हैं, तो आप भी उपयोग कर सकते हैं

<img src="somefile.svg" style="height: 82vh; margin-top: 9vh; margin-left: 9vh">

और आपके पास स्क्रीनशॉट के लिए अच्छा स्क्रीन पर एक छवि होगी - उदाहरण के लिए, मैक का उपयोग करके CmdShift4या CmdShift3पर। सुनिश्चित करें कि आपने अपनी Chrome विंडो को स्क्रीन पर अधिकतम अनुमत किया है।


स्मार्ट समाधान!
मनु

1
यह वास्तव में मेरे लिए सबसे अच्छा परिणाम उत्पन्न करता है क्योंकि यह ब्राउज़र के समान ही प्रस्तुत करता है।
जेसन हसलाम

परिणामी छवि मेरे लिए बहुत खराब संकल्प थी
माइकल

सरल :) लेकिन बहुत बड़े एसवीजी के लिए, परिणामस्वरूप छवि का रिज़ॉल्यूशन बहुत कम है, जैसा कि @Michael ने उल्लेख किया है।
वॉलीड्रिअस

5

यदि आप एक साथ कई काम करना चाहते हैं, तो आप कर सकते हैं:

mogrify -format png *.svg

मक्खी आदि पर भी आकार बदलने के विकल्प हैं।


3
mogrifyImageMagick के बराबर भी है।
श्रीवत्सआर

महान काम करता है, लेकिन बेरहमी से धीमा।
मियोकी

-1? किसी को लगता है कि यह उपयोगी नहीं है? क्या त्रुटि है?
२०

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

4

अपाचे बाटिक की कोशिश करो ।

java -jar batik-rasterizer.jar FILES

यह बैच रूपांतरण का भी समर्थन करता है और कई अन्य उपयोगी विकल्प हैं।


4

मैंने इसके लिए नोड / एनपीएम का उपयोग करके svgexport बनाया है , यह क्रॉस-प्लेटफ़ॉर्म है और जितना सरल हो सकता है:

svgexport input.svg output.png

यह अब तक का उपयोग करने और याद रखने में सबसे आसान था। इसके अलावा, केवल एक जिसने मेरे मामले में एक सही परिणाम उत्पन्न किया।
मार्को ग्रीज़क

परिणामी संकल्प मेरे लिए महान नहीं था।
माइकल

3

आप svg को रेंडर करने के लिए फैंटमज का भी इस्तेमाल कर सकते हैं । लाभ यह है कि यह इसे एक ब्राउज़र की तरह प्रस्तुत करता है क्योंकि यह मूल रूप से एक बिना शीर्षक वाला WebKit है।

एक बार जब आप इसे डाउनलोड करते हैं तो आपको phantomjs (बाइनरी) और rasterizer.js फ़ाइल को उदाहरण फ़ोल्डर से चाहिए।

phantomjs examples/rasterize.js Tiger.svg out.png

1
संदर्भ के लिए, इसे स्थापित किया जा सकता है brew cask install phantomjs। मेरे इंस्टॉल में, उदाहरण फ़ोल्डर पथ में स्थित था /usr/local/Caskroom/phantomjs/2.1.1/phantomjs-2.1.1-macosx/examples/
वॉलीड्रिअस

2

यह वही है जो मैंने इस्तेमाल किया:

brew install imagemagick --with-librsvg

फिर निम्नलिखित कमांड चलाएँ:

find . -type f -name "*.svg" -exec bash -c 'convert $0 $0.png' {} \; rename 's/svg\.png/png/' *

आशा है ये मदद करेगा।


1

मैं अपने लिनक्स पर इस कमांड का उपयोग करता हूं। यह आपके लिए भी काम करना चाहिए।

mogrify +antialias -density 2000 -verbose -format png *.svg

मैंने सीखा है कि "-डेंसिटी" तर्क के बिना, बिटमैप बहुत पिक्सेलयुक्त होगा। अपनी आवश्यकता से मेल खाने के लिए -density मान बदलें।


2
घनत्व के साथ भी, रूपांतरण एक छवि उत्पन्न नहीं करता है जो वेक्टर छवि के समान तेज है। इसके बजाय अपाचे बाटिक की कोशिश करें।
Behrang

1

ImageMagick के कन्वर्ट कमांड, कुछ अन्य मापदंडों का उपयोग करते हुए, यह मेरे लिए क्या था। यहां मेरा बैच बैश स्क्रिप्ट समाधान है जो आपके सभी कोर का उपयोग करने के लिए कई प्रक्रियाओं में कार्य को विभाजित करता है! आवश्यकतानुसार संशोधित करें।

बैचकॉनवर्टोएसवीजी। एस (तर्क के रूप में प्रक्रियाओं की संख्या लेता है):

end=$(( $1 - 1 ))
for i in `seq 0 $end`;
        do
            echo Spawning helper $i of $end
                ./convertToSvgHelper.sh $i $1 &
        done 

convertToSvgHelper.sh:

n=$1
for file in ./*.svg; do
   filename=${file%.svg}
   echo converting file named $filename
   test $n -eq 0 && convert -format png -resize 74 -background transparent -density 600 $file $filename.png
   n=$((n+1))
   n=$((n%$2))
done

0

जैसा कि पहले बताया गया था कि ImageMagick ट्रिक करता है। मैं सिर्फ GraphicsMagick के लिए एक बिंदु जोड़ना चाहता था , ImageMagick का एक पुराना कांटा जिसमें कुछ सुधार हैं (और फ़िंक के माध्यम से स्थापित होने पर बहुत कम निर्भरता ब्लोट)।


0

आप PNG में SVG फ़ाइलों के संपूर्ण फ़ोल्डर पर बैच रूपांतरण कर सकते हैं। मैंने 80px की चौड़ाई के साथ png फाइलें तैयार करने के लिए Inkscape कमांड लाइन इंटरफेस का उपयोग किया।

find ~/desktop/toconvert '*.svg' -exec /Applications/Inkscape.app/Contents/Resources/bin/inkscape -z -w 80 -e "{}".png "{}" \;

png को मूल नाम * .png के साथ सहेजा जाएगा


0

फिर भी कुछ भी स्थापित किए बिना एक और तरीका। हालांकि कमांड लाइन में नहीं।

  1. सफारी में .svg फ़ाइल खोलें।
  2. निरीक्षक खोलने के लिए alt-command-i दबाएं।
  3. <svg>टैग पर राइट-क्लिक करें , "कैप्चर स्क्रीनशॉट" चुनें। (ध्यान दें कि आपको चित्र में ज़ूम नहीं करना चाहिए।)

PS अगर यह बहुत छोटा है तो .svg छवि को बड़ा करने के लिए, टेक्स्ट एडिटर में .svg फ़ाइल खोलने का प्रयास करें और 0मेटा-विशेषता को छोड़कर हर संख्या में संलग्न करें। इस से एक वैश्विक regex प्रतिस्थापन द्वारा किया जा सकता (\d+)करने के लिए $10है, जहां $1वापस संदर्भ के लिए प्लेसहोल्डर है, उदाहरण के लिए।


आपको शायद यह उल्लेख करना चाहिए कि यह लगभग  this 無極 this this this के उत्तर के समान है
स्कॉट

-1

wkhtmltoimage (प्रोजेक्ट wkhtmltopdf से) ने इसे अच्छी तरह से परिवर्तित किया:

wkhtmltoimage --zoom 2 foo.svg foo.png

ImageMagick मेरे मैक पर CJK चरित्र को रिक्त के रूप में प्रस्तुत करता है।


हालांकि यह लिंक प्रश्न का उत्तर दे सकता है, लेकिन उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर है। लिंक-केवल उत्तर अमान्य हो सकते हैं यदि लिंक किए गए पृष्ठ बदल जाते हैं। - समीक्षा से
ब्लैकवुड

@ ब्लेकवुड ठीक है, अद्यतन।
जार्जक्ष्श
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.