2012-04-23 14 views
10
में जेपीईजी

मैं के रूप में मैं यह कर सकते हैं जितना googled है के लिए एक एसवीजी फ़ाइल प्रतिपादन, लेकिन मैं केवल एक PHP वर्ग है कि इंकस्केप पर कॉल एसवीजी रेंडर करने के लिए मिल गया है, तो मैं यहाँ से पूछते हैं:PNG या पीएचपी

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

मेरे पास कुछ भी इंस्टॉल करने का विकल्प नहीं है, इसलिए एक कक्षा जो एसडीजी को पीएनजी में जीडीएलआईबी का उपयोग करके परिवर्तित करती है वह सबसे आदर्श होगी।

उत्तर

20

जांचें कि ImageMagick इंस्टॉल है (आप phpinfo का उपयोग कर पता लगा सकते हैं)। यदि ऐसा है, तो आप पीएनजी को कवर करने के लिए निम्न कोड का उपयोग कर सकते हैं।

$image = new Imagick(); 
$image->readImageBlob(file_get_contents('image.svg')); 
$image->setImageFormat("png24"); 
$image->resizeImage(1024, 768, imagick::FILTER_LANCZOS, 1); 
$image->writeImage('image.png'); 

इस पर चर्चा करने वाले कई धागे हैं। एक जो विशेष रूप से उपयोगी है यह धागा है: Convert SVG image to PNG with PHP

+1

दुख की बात है, यह नहीं है, और मैं इसे इंस्टॉल नहीं कर सकता। मेरे पास PHP और GDLib है। जीडीएलआईबी के साथ यह संभव होना चाहिए .. यह लगभग एक अनुवाद है, लगभग हर एसवीजी टैग के लिए एक जीडीएलआईबी फ़ंक्शन है। – DanRedux

+0

जीडी एसवीजी का समर्थन नहीं करता है। विकिमीडिया * ImageMagik *, * sodipodi *, * inkscape *, * batik *, * rsvg *, * imgserv * का समर्थन करता है। यदि आप कुछ और इंस्टॉल नहीं कर सकते हैं, तो शायद आप देख सकते हैं कि वे कनवर्टर्स स्टैंडअलोन चला सकते हैं और आप इसे अपनी PHP स्क्रिप्ट से आमंत्रित कर सकते हैं। –