ImageMagick Convert: SVG फाइलों से तेज आकार की PNG फाइलें कैसे तैयार करें?


8

मैं इस कमांड का उपयोग एक एसवीजी फाइल के तीव्र 512px चौड़े संस्करण को उत्पन्न करने के लिए कर रहा हूँ जो मेरे पास है:

convert -geometry 256 pinterest.svg pinterest.png

यह स्रोत फ़ाइल है:

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
         width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">
<path fill="#231F20" d="M8,0C3.582,0,0,3.582,0,8c0,3.275,1.97,6.09,4.789,7.327c-0.022-0.559-0.005-1.229,0.139-1.837
        c0.154-0.649,1.029-4.359,1.029-4.359s-0.255-0.51-0.255-1.266c0-1.186,0.687-2.071,1.542-2.071c0.729,0,1.08,0.547,1.08,1.201
        c0,0.73-0.467,1.825-0.707,2.838c-0.2,0.85,0.426,1.541,1.262,1.541c1.515,0,2.537-1.947,2.537-4.253
        c0-1.753-1.181-3.066-3.329-3.066c-2.427,0-3.938,1.81-3.938,3.831c0,0.697,0.205,1.188,0.528,1.57
        C4.824,9.631,4.845,9.7,4.792,9.902c-0.039,0.147-0.126,0.502-0.163,0.643c-0.054,0.202-0.218,0.274-0.401,0.199
        C3.11,10.289,2.59,9.064,2.59,7.688c0-2.272,1.916-4.997,5.718-4.997c3.053,0,5.065,2.21,5.065,4.582
        c0,3.139-1.746,5.482-4.317,5.482c-0.864,0-1.677-0.467-1.955-0.996c0,0-0.464,1.844-0.562,2.199
        c-0.17,0.616-0.502,1.232-0.805,1.713C6.452,15.885,7.213,16,8,16c4.418,0,8-3.582,8-8S12.418,0,8,0z"/>
</svg>

हालाँकि यह एक धुँधली पीएनजी पैदा करता है:

Pinterest

जैसा कि मेरा स्रोत एक वेक्टर चित्रण है, मैं एक तेज छवि प्राप्त करने की उम्मीद कर रहा था। क्या ऐसा करने का कोई तरीका है?


2
समस्या width="16px" height="16px"SVG फ़ाइल में है। convert -resize 3200% pinterest.svg pinterest.png512x512 छवि के लिए ImageMagick कमांड को बदलने का प्रयास करें । यकीन नहीं तो आपको -geometry 512भी जरूरत होगी या नहीं।
मार्टिउ

यह भी काम नहीं किया। मैंने इसके साथ और बिना कोशिश की -geometry। यह धुंधली छवि पैदा करता है। यहां तक ​​कि -densityकाम नहीं करता है। हालांकि मैं अपाचे बाटिक का उपयोग करके अपने वांछित परिणाम प्राप्त करने में कामयाब रहा।
TheFooProgrammer

1
थोड़ा अलग दृष्टिकोण कुछ ऐसा हो सकता है जैसे इस उत्तर में वर्णित है ।
मार्टिउ

जवाबों:


5

मैं एक ही समस्या थी, लेकिन मैं पहले घनत्व निर्धारित करके इसके चारों ओर चला गया।

कमांड लाइन से:

for %f in (*.svg) do (convert -antialias -background transparent -density 600 -resize 1024x1024 %f %~nf.png)

1
convert -density 2304 pinterest.svg pinterest.png

क्योंकि मूल डीपीआई 72 है और पिक्सेल का आकार 16x16 है, इसलिए 512/16 * 72 2304 है।


0

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

java -jar batik-rasterizer.jar samples/batikFX.svg

अधिक जानकारी के लिए यहाँ देखें ।


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