2012-01-25 13 views
49

मेरे पास एकाधिक एसवीजी हैं, उनमें से कुछ बड़े (11 एमबी) हैं और वे pdf2svg का उपयोग करके पीडीएफ से बनाए गए हैं।एसवीजी अनुकूलित करने के लिए कुछ विकल्प क्या हैं?

समस्या यह है कि एसवीजी बहुत बड़ा है, खोलने में लंबा समय लगता है, और अनावश्यक रूप से जटिल है। इसमें ज्यादातर टेक्स्ट और कुछ छवियां होती हैं (समाचार पत्र सोचें), और पाठ को वर्णों के छोटे भाग में विभाजित किया गया है, यहां तक ​​कि शब्दों भी नहीं।

मुझे आकार को कम करने के लिए इसे अनुकूलित करने की आवश्यकता है, और इसे तेज़ी से लोड करने के लिए तत्वों की मात्रा को कम करने के लिए भी। एकमात्र चीज जिसे मैंने अभी तक सोचा था, उन पात्रों को देख रहा है जो एक पंक्ति में हैं, और उन्हें <tspan> में शामिल करें।

इससे टेक्स्ट तत्वों की मात्रा को काफी महत्वपूर्ण मार्जिन से कम करना चाहिए, क्योंकि ऐसा लगता है कि यह ज्यादातर 1-5 अक्षरों के समूह हैं।

लेकिन मैं आकार को कम करने के लिए एसवीजी में कुछ और चीजों की तलाश कर रहा हूं। यहां एक मुख्य फ़ॉन्ट भी है, जिसका उपयोग लगभग 9 5% पाठ के लिए किया जाता है, लेकिन जैसा कि अभी है, सभी पाठ को ग्लिफ (आकार प्रदान किए गए) के रूप में परिभाषित किया गया है।

क्या फ़ॉन्ट को एम्बेड करना संभव है, इसलिए टेक्स्ट टेक्स्ट के रूप में प्रस्तुत किया गया है, न कि आकार के रूप में?

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

मैं यह भी ध्यान रखना चाहूंगा कि गति वास्तव में महत्वपूर्ण नहीं है। इससे कोई फर्क नहीं पड़ता कि रूपांतरण कितना समय लगता है, जब तक यह आवश्यक परिणाम उत्पन्न करता है।

+1

यह क्या आप वास्तव में चाहते हैं HTML है की तरह लगता है:

इस साइट का प्रयास करें। यदि आप टेक्स्ट ग्लाइफ को एक एम्बेडेड फ़ॉन्ट के साथ पाठ में बदलकर एसवीजी को अनुकूलित करते हैं, और आप शेष आकार और छवियों को उन्हें एक छोटा फ़ाइल आकार बनाने के लिए अनुकूलित करते हैं, तो आप HTML के साथ समाप्त हो जाएंगे। –

उत्तर

2

मुझे लगता है कि आपका परिवर्तित एसवीजी शायद यह हो सकता है कि इससे क्या हो सकता है। मुझे यकीन नहीं है कि अगर इंकस्केप इसे ले जाएगा! मेनू विकल्प जैसे "टेक्स्ट में कनवर्ट करें" हैं लेकिन ये आवश्यक रूप से काम नहीं करते हैं।

आप डिफ़ॉल्ट एसवीजी विशेषता मानों जैसे संदर्भों को हटाने के लिए अपनी फ़ाइल पर खोज और प्रतिस्थापन कर सकते हैं जैसे स्ट्रोक: # 000000; स्ट्रोक-चौड़ाई: 1 पीएक्स; स्ट्रोक-लाइन कैप: बट; स्ट्रोक-लाइनजॉइन: मिटर; स्ट्रोक-अस्पष्टता: 1; इनमें से बहुत से डिफ़ॉल्ट हैं वैसे भी उन लोगों के लिए कुछ भी खोज और प्रतिस्थापित करें।

यह भी आश्चर्यजनक है कि आप अनावश्यक परिशुद्धता को कैसे कम कर सकते हैं। उस विशेष फ़ाइल के लिए आपके रूपांतरण पर आपको एक दशमलव अंतराल मिल सकता है .0000001 या .99999675 इन सभी दोहराव को भी हटाया जा सकता है

22

मैंने हाल ही में एसवीजी को अनुकूलित करने के लिए पाइथन प्रोग्राम बनाना शुरू कर दिया है, जिसे आप पा सकते हैं पर: में और अधिक जानकारी के साथ http://petercollingridge.appspot.com/

: https://github.com/petercollingridge/SVG-Optimiser

पर एक बहुत ही प्रारंभिक ऑनलाइन संस्करण नहीं है, http://www.petercollingridge.co.uk/blog/svg-optimiser

यह पूर्ण और शायद से दूर अत्यधिक गाड़ी है, लेकिन यह कुछ मुद्दों से संबंधित है, जिसमें चास्बेन ने उल्लेख किया है कि अनावश्यक परिशुद्धता और डिफ़ॉल्ट शैली विशेषताओं को हटाया जा रहा है। यदि आप जानते हैं कि आप क्या खोज रहे हैं, तो यह अनावश्यक विशेषताओं और नामस्थानों को भी हटा सकता है, और शैलियों को सीएसएस में परिवर्तित कर देगा जो यह देखना आसान बनाता है कि उन्हें कैसे सुधार किया जा सकता है।

मैं वास्तव में समझ नहीं पा रहा हूं कि फ़ॉन्ट एम्बेड करने के बारे में आपका क्या मतलब है। यदि आप जीवीएफ और एकाधिक चरित्र तत्वों को दिखाते हुए एसवीजी का एक उदाहरण खंड पेस्ट करते हैं, तो मैं उन्हें जोड़ने के लिए एक विधि शामिल कर सकता हूं।

+0

मैंने अभी आपके टूल का परीक्षण किया है और यह वास्तव में अच्छी तरह से काम कर रहा है। धन्यवाद ;-) –

+1

धन्यवाद! यह जानना अच्छा है कि यह कुछ उपयोग है। –

20

मैं Scour अपने आप को सिफारिश कर सकते हैं के रूप में मैं यह एक बहुत इस्तेमाल किया है जब एसवीजी फाइलों से अनावश्यक cruft है, जो मेरा एक शौक के बारे में कुछ है बंद सफाई।

एक उदाहरण कमांड लाइन दस्त आप अच्छी तरह से काम हो सकता है (और जो मैं से शुरू करते हैं):

scour --enable-viewboxing --create-groups --shorten-ids --enable-id-stripping --enable-comment-stripping --disable-embed-rasters --remove-metadata --strip-xml-prolog -p 9 <old.svg> new.svg 

यकीन है कि यह कुछ भी बर्बाद नहीं किया बनाने के लिए नए के साथ पुराने की तुलना करें और -p दशमलव परिशुद्धता को कम करने का प्रयास करें (यदि आप एक नहीं देते हैं तो डिफ़ॉल्ट 5 है); कुछ स्तर पर यह शायद चीजों को बहुत बुरी तरह विकृत करना शुरू कर देता है, लेकिन एक या दो दशमलव उच्च दिखना चाहिए।

यदि आप अधिक मैन्युअल दृष्टिकोण लेना चाहते हैं, तो Kilobyte SVG Challenge changesets में एकत्रित व्यापार की कई सारी चालें हैं, जो इस तरह की चीज़ के लिए संयुक्त शिक्षा और शिक्षण स्थान के रूप में हैं।

हां, आप एसवीजी फ़ाइल में एक फ़ॉन्ट एम्बेड कर सकते हैं, या बाहरी को लिंक कर सकते हैं, जैसा कि माइक Bostock द्वारा WebPlatform.org logo (non-html-wrapped version here) पर प्रदर्शित किया गया है।

यदि आप मनमाने ढंग से पीडीएफ चुनते हैं और इसे परिवर्तित करते हैं, तो आपके पास यह जानने के लिए निश्चित रूप से यह आसान है कि आपके पास क्या फोंट का उपयोग किया जाता है; मुझे किसी भी उपकरण के बारे में पता नहीं है जो कि मूल रूप से उस काम के अधिकांश (या सभी) किए बिना मूल पीडीएफ एम्बेडेड जो भी ग्लिफ से कोई नाम नहीं है।

इसके अलावा Kilobyte SVG Challenge README के उपकरण अनुभाग में एसवीजी ऑप्टिमाइज़ेशन टूल की बढ़ती सूची है।

+1

अभी के लिए, मेरी पहली पसंद है। आउटपुट सही और हल्का है। –

+0

मैंने अभी कोशिश की। यह अच्छी तरह से काम किया। 'scour -i mat1.svg -o mat1_clean2.svg' और यह svgcleaner की तरह छवि में साजिश का शीर्षक नहीं हटाया। – Nasser

+0

ओपनबीएसडी पर: 'pkg_add scour'। अच्छा, त्वरित समाधान। –

26

एसवीजी-क्लीनर पूरी तरह से काम करता प्रतीत होता है: दूसरों की तुलना में बहुत तेजी से, बेहतर संपीड़न, मजबूत, मेरे परीक्षण में मजबूत, बैच फ़ोल्डर proccessing, और हे! हमारे लिए आलसी लोगों के लिए एक विंडोज इंस्टॉलर!

मेरी कोशिश: मूल फ़ाइल का आकार: 241 केबी, इंकस्केप के बाद रेफरी हटाएं: 14 9 के, उपकरण के साथ साफ: 38 KB, साफ और संपीड़ित: 5 केबी (.sgvz फ़ाइल एक्सटेंशन)।

मैंने रिक्त ड्राइंग की उम्मीद करते हुए आखिरी बार खोलने की कोशिश की ... लेकिन मेरे ग्राफिक्स अभी भी बरकरार थे!

डाउनलोड यह here (विंडोज, Ubuntu या स्रोत)

+2

विंडोज़ डाउनलोड लिंक काम नहीं करता है (कम से कम वर्तमान में)। विंडोज़ संस्करण डाउनलोड किया जा सकता है [यहां] (http://sourceforge.net/projects/svgcleaner/) – snumpy

+0

svg-clean पूरी तरह से काम नहीं करता है। जब मैंने svg फ़ाइल को साफ़ किया, तो मैंने अपनी छवि के सभी खिताब हटा दिए। यहां तक ​​कि 'preset = basic' का उपयोग करते समय भी। – Nasser

+0

क्या एसवीजी क्लीनर को 'stdin' से पढ़ने और फाइलों के बजाय' stdout' 'लिखने का कोई तरीका है? मैंने इनपुट और आउटपुट फाइलों के रूप में '/ dev/stdin' और'/dev/stdout' निर्दिष्ट करने का प्रयास किया, लेकिन यह असफल रहा। – Ponkadoodle

7

https://github.com/svg/svgo

sudo npm install -g svgo 

मौजूदा निर्देशिका में सभी SVGs अनुकूलन करने के लिए:

svgo -f . 

आप NPM नहीं है, तो , आप इसे उबंटू पर इंस्टॉल कर सकते हैं:

sudo apt-get update && sudo apt-get install nodejs-legacy npm 
+2

इंकस्केप 0.48 के साथ बनाए गए मेरे एसवीजी 1.1 पर अच्छा नहीं है। एसवीजीओ गन्दा आकृतियों का उत्पादन करता है, इसका उपयोग नहीं कर सकता है। –

+0

एसवीजीओ एसवीजी अनुकूलित करने के लिए एक महान सीएलआई उपकरण है। वैसे, uninitiated के लिए, एसवीजी पहले से ही एक बहुत ही प्रदर्शनशील और हल्के छवि प्रारूप है। आप अपने हिरन अनुकूलन रास्टर छवियों के लिए और अधिक धमाके होने की संभावना है। –

0

पायथन लाइब्रेरी feedparser का उपयोग करते हुए, जिसमें SVG sanitization शामिल है, मैंने यह फ़ंक्शन लिखा है जो इसे किसी भी आरएसएस आइटम में परेशान करने के लिए परेशान करता है।

import feedparser 
def sanitize_svg(svg): 
    feed = """<?xml version="1.0" encoding="UTF-8" ?><rss><channel><item><description>""" + svg + """</description></item></channel></rss>""" 
    parsed = feedparser.parse(feed) 
    return parsed.entries[0].description.encode('utf-8') 

हालांकि सुरक्षा के साथ तत्वों को श्वेतसूची के लिए बनाया गया है, यह भी एसवीजी आकार को थोड़ा सा कम कर देता है।

संबंधित मुद्दे