ইমেজম্যাগিক রূপান্তর: কীভাবে এসভিজি ফাইলগুলি থেকে ধারালো পুনরায় আকার দেওয়া পিএনজি ফাইল তৈরি করতে পারি?


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>

তবে এটি একটি অস্পষ্ট পিএনজি উত্পাদন করে:

পিন্টারেস্ট

যেহেতু আমার উত্সটি একটি ভেক্টর উদাহরণ, আমি একটি ধারালো চিত্র পাওয়ার আশা করছিলাম। এটি করার কোন উপায় আছে?


2
সমস্যাটি হচ্ছে width="16px" height="16px"এসভিজি ফাইলের মধ্যে। convert -resize 3200% pinterest.svg pinterest.png512x512 চিত্রের জন্য ইমেজম্যাগিক কমান্ডটি পরিবর্তন করার চেষ্টা করুন । আপনার খুব দরকার -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

আমি ইমেজম্যাগিক ব্যবহার করে এই সমস্যাটি সমাধান করার কোনও উপায় খুঁজে পাই নি, তবে অ্যাপাচি বাটিকের রাস্টেরাইজ স্ক্রিপ্টটি কোনও ক্ষতিহীন ফ্যাশনে এসভিজিটিকে পিএনজিতে রূপান্তর এবং আকার পরিবর্তন করতে ব্যবহার করা যেতে পারে।

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

আরও তথ্যের জন্য এখানে দেখুন ।


2
কেবলমাত্র একটি নটপিক, তবে ভেক্টর থেকে রাস্টার গ্রাফিক্সকে "লসলেস" রূপান্তর করতে আসলেই তা বোঝা যায় না - একটি চিত্র ফাইলটি সম্পূর্ণ আলাদা উপস্থাপনা এবং ভেক্টর ফর্ম্যাটে সংজ্ঞায়িত গ্রাফিক্সের একটি সান্নিধ্য হিসাবে থাকবে।
মার্টিনিউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.