2011-09-16 24 views
21

मेरे पास एसवीजी प्रारूप में एक लोगो छवि है और मैं सोच रहा हूं कि कई अलग-अलग आकार की पीएनजी फाइलें उत्पन्न करने का कोई तरीका है या नहीं।एसवीजी फ़ाइल को कई अलग-अलग आकार पीएनजी फाइलों में कनवर्ट करें

उदाहरण के लिए, मैंने 20 अलग चौड़ाई और ऊंचाई निर्धारित की है और यह 20 पीएनजी फाइलें उत्पन्न करती है। यह ठीक है अगर मुझे एक समय में 5 छवियां करना है।

मेरे पास चित्रकार स्थापित है और यह पता नहीं लगा सकता कि इसे कैसे किया जाए।

आपकी सभी मदद के लिए धन्यवाद!

उत्तर

12

मुझे इलस्ट्रेटर के बारे में पता नहीं है, लेकिन यह Inkscape command line options का उपयोग करना आसान होना चाहिए। उदाहरण के लिए, रूबी का उपयोग कर:

$ ruby -e '[10,100,200].each { |x| `inkscape --export-png logo#{x}.png -w #{x} logo.svg` }' 
+0

हाँ यह काम करेगा, मुझे पता चला कि इलस्ट्रेटर के साथ ऐसा करने का कोई तरीका नहीं था जो मुझे निराश करता है इसलिए मुझे इसे मैन्युअल रूप से करना पड़ा। – Mohammad

+4

जो मुझे बाहर निकाल देता है ... cmd लाइन ruby ​​का उपयोग एक cmd लाइन प्रोग्राम 3 बार कॉल करने के लिए ... क्या उस पागलपन के लिए कोई नाम है? –

2

inkmake पर एक नजर डालें। मैंने वास्तव में विभिन्न आकारों में पीएनजी आदि को एसवीजी फाइलों को निर्यात करने के लिए बैच निर्यात करने के लिए यह टूल बनाया है। यह डिज़ाइन था क्योंकि मैं इनक्सकेप में सहेजना चाहता था और फिर टर्मिनल में inkmake चलाता हूं और यह सभी पीएनजी फाइलों को निर्यात करेगा।

28

स्वीकृत उत्तर ठीक है। official help on options उपलब्ध है। इसके अलावा बुनियादी शैल कमांड अच्छी तरह से यहाँ क्या करेंगे:

for x in 10 100 200 ; do inkscape --export-png logo${x}.png -w ${x} logo.svg ; done 

खिड़कियों में कमांड लाइन पर टिप्पणी में @avalancha से इस लाइन का उपयोग

for %x in (100 200 300) ; do inkscape --export-png logo%x.png -w %x logo.svg ; done 
+2

लोगों को केवल एक फ़ाइल को बदलने की आवश्यकता है, यहां एक आसान कॉपी पेस्ट है: 'inkscape --export-png icon.png -w 128 logo.svg' – k0pernikus

+1

विंडोज़ में कमांड लाइन पर लोगों के लिए यह% x के लिए उपयोग करता है (100 200 300); इनक्सस्केप - एक्सपोर्ट-पीएनजी लोगो% x.png -w% x logo.svg करें; किया गया – avalancha

+0

@avalancha इसे प्यार करता है, आपका जवाब अपने स्वयं के अधिकार में होना चाहिए – Alveoli

14

यहाँ है कि यह कैसे बहुत तेजी से (मेरे लिए 3x बनाने के लिए सिर्फ एक बार इंकस्केप शुरू करने, और कैसे (अलग निर्देशिका के लिए छवियों को निर्यात करने के लिए के रूप में एंड्रॉयड का उपयोग करता है के द्वारा एक SSD पर सिर्फ 5 निर्यात)) के लिए:

#!/bin/sh 
# Converts the Inkscape icon file ic_launcher_web.svg to the launcher web & app png files. 

PROJECT="My Project Name" 
INPUT="source-assets/ic_launcher_web.svg" 
MAIN="${PROJECT}/src/main/" 
RES="${MAIN}res/" 
DRAWABLE="${RES}/drawable" 

inkscape --shell <<COMMANDS 
    --export-png "${MAIN}ic_launcher-web.png"   -w 512 "${INPUT}" 
    --export-png "${DRAWABLE}-mdpi/ic_launcher.png" -w 48 "${INPUT}" 
    --export-png "${DRAWABLE}-hdpi/ic_launcher.png" -w 72 "${INPUT}" 
    --export-png "${DRAWABLE}-xhdpi/ic_launcher.png" -w 96 "${INPUT}" 
    --export-png "${DRAWABLE}-xxhdpi/ic_launcher.png" -w 144 "${INPUT}" 
quit 
COMMANDS 

यह एक bash खोल अनुसूचित जाति है ript। विंडोज़ पर आप इसे MINGW32 (उदा। गिटहब के गिट शैल) में चला सकते हैं या इसे विंडोज डॉस शैल स्क्रिप्ट में बदल सकते हैं। (एक डॉस स्क्रिप्ट के लिए, आपको "यहां दस्तावेज़" COMMANDS को कुछ डीओएस संभाल सकता है। heredoc for Windows batch? को अस्थायी फ़ाइल में टेक्स्ट की एकाधिक पंक्तियों को प्रतिबिंबित करने के लिए देखें।)

+0

यह आदेश कहां लिखना है: एस मुझे समझ में नहीं आता है। – salih

+1

@salih यह स्क्रिप्ट एक यूनिक्स-जैसे खोल के भीतर चलाने के लिए लिखा गया है जैसे कि विंडोज़ पर एमआईएनडब्ल्यू, या मैक ओएसएक्स शैल, या लिनक्स शैल। (इसे विंडोज डॉस खोल या पावरशेल के भीतर चलाने के लिए संशोधित किया जा सकता है।) इस पाठ को टेक्स्ट फ़ाइल के रूप में सहेजें, 'export.sh' कहें। स्क्रिप्ट को "निष्पादन योग्य" के रूप में चिह्नित करने के लिए 'chmod ug + x export.sh' कमांड चलाएं। फिर जब भी आप अपनी एसवीजी छवि को कई आकारों में निर्यात करना चाहते हैं, तो वर्तमान निर्देशिका में होने पर स्क्रिप्ट को '।/Export.sh' के माध्यम से चलाएं, या बस अपने निर्यात पर 'export.sh'। – Jerry101

+0

अच्छी स्पष्टीकरण के लिए धन्यवाद – salih

2

यदि आपके पास नहीं है पहले से ही imagemagick स्थापित करें। पर OSX, कि rsvg समर्थन विशेष रूप से की आवश्यकता है:

brew install imagemagick --with-librsvg 

तुम भी इंकस्केप की जरूरत है, अन्यथा आप पा सकते हैं कि आपकी छवियों सभी काले (पारदर्शी क्षेत्रों को छोड़कर) बाहर आते हैं।

convert -density 1536 -background none -resize 100x100 input.svg output-100.png 

1536 कुछ मैं करने के लिए अच्छा जवाब मिल नहीं पा रहा हूँ के लिए एक समाधान नहीं है:

brew install homebrew/gui/inkscape 

उसके बाद, आप बदलने में सक्षम इस प्रकार होना चाहिए। मेरे प्रयोगों में, -density तर्क को छोड़कर उन छवियों को बनाता है जो बहुत छोटे हैं। पर -size 100x100 पर एक छवि को कनवर्ट करना मुझे 96x96 की आउटपुट छवि देता है, इसलिए मैं इसके बजाय जो कर रहा हूं वह घनत्व पर ओवरशूट कर रहा है और लक्ष्य आकार में आकार बदल रहा है।

टीएल; डीआर घनत्व का उपयोग करें जो आपके लक्षित आकार से 1500 गुना बड़ा है, और वहां से जाएं।

उस आदेश को थोक चलाने के कई तरीके हैं। यहां खोल में एक है:

for s in 10 100 200 ; do convert -density 1536 -background none -resize ${s}x${s} input.svg output-${s}.png ; done 
संबंधित मुद्दे