Text থেকে Image – পিএইচপি প্রজেক্ট
কিভাবে Text থেকে Image করা যায় আজ তাই আলোচনা করব। আমার নিজের প্রয়োজনে দিন দুয়েক আগে কাজটা করলাম আর এখন তা আপনাদের সামনে তুলে ধরবার চেষ্ঠা করছি ।
আমার এলাকার জন্য একটা ওয়েব ডিরেকটরি করছি আর সেখানে Email ID ও রাখতে হচ্ছে । আর আমরা কম বেশি সবায় জানি কিভাবে Spamming এর জন্য Email ID collect করা হয়। আর তাই Email ID গুলো কে Image আকারে প্রকাশ করার জন্য কাজটি আমাকে করতে হয়েছে । তো এবার আসা যাক মূল কাজে . . .
Demo: http://shariarbd.com/project/text2image/
প্রথমে Server এ একটা php ফাইল তৈরি করুন আর নাম দিন image.php (চাইলে অন্য নাম ও দিতে পারেন)। এবার এতে নিচের কোড গুল কপি করুন ।
<?php if(!isset($_GET['img'])) { exit(); } header ("Content-type: image/png"); $string = $_GET['img']; $font = 4; $width = ImageFontWidth($font) * strlen($string); $height = ImageFontHeight($font)+2; $im = @imagecreate ($width,$height); $background_color = imagecolorallocate ($im, 255, 255, 255); //white background $text_color = imagecolorallocate ($im, 0, 0,0);//black text imagestring ($im, $font, 0, 0, $string, $text_color); imagepng ($im); ?>
উপরের কোডগুলো Get method এ text গ্রহন করে সেই text টির image তৈরি করবে । এর পর আর একটি ফাইলএ নিচের কোড গুলো রেখে ব্রাউজার এ ফাইল টি কল করুন। (আগের ফাইলটি এবং এই ফাইলটি যেন একই ডিরেকটরিতে থাকে। আর ভিন্য ডিরেকটরিতে থাকলে পাথ ঠিক করে নিন ।)
<?php $txt="[email protected]"; ?> <img src="image.php?img=<?php echo $txt; ?>" border="0">
এখানে একটি কিন্তু থেকেই গেছে । আর তা হল – <img src=”image.php?img=<?php echo $txt; ?>” border=”0″> এই জায়গায় ঠিকই Email ID টি Text আকারে প্রকাশিত হচ্ছে যদিও দেখাযাবে Image (Source code view করলে text Email ID দেখা যাবে !) । আমরা জানি যে সাধারনত @ কে খুজলে email ID পাওয়া সহজ। আর তাই এখন এই @ কেই সরিয়ে ফেলবো । আর সে কাজটি করার জন্য একটা ফাংশন তৈরি করে নেব। আর সেটি হবে নিচের মতো ।
<?php function convATandDot($currenttext){ $old = array('@','.'); $new = array('__shariar__','__dot__'); $convTEXT= str_replace($old, $new, $currenttext); return $convTEXT; } ?>
এই ফাংশনটি @ এবং . কে __shariar__ এবং __dot__ এ রুপান্তরিত করবে। ফলে [email protected] পরিনত হবে emailID__shariar__example__dot__com
আমাদের আরও একটি ফাংশন লাগবে যা convert করা text টি আগের অনস্থায় ফিরিয়ে নিতে পারে । আর তাই আগের ফাংশনটিকে একটু উল্টিয়ে নিতে হবে । আর তা নিচের মতো হবে ।
<?php function convATandDot($currenttext){ $old = array('__shariar__','__dot__'); $new = array('@','.'); $convTEXT= str_replace($old, $new, $currenttext); return $convTEXT; } ?>
এবার দেখা যাক পুরো কোড কেমন হয় ।
প্রথমের ফাইল টি (image.php) এবার নিচের মতো করুন।
<?php if(!isset($_GET['img'])) { exit(); } header ("Content-type: image/png"); $string = $_GET['img']; $string = convATandDot($string); $font = 4; $width = ImageFontWidth($font) * strlen($string); $height = ImageFontHeight($font)+2; $im = @imagecreate ($width,$height); $background_color = imagecolorallocate ($im, 255, 255, 255); //white background $text_color = imagecolorallocate ($im, 0, 0,0);//black text imagestring ($im, $font, 0, 0, $string, $text_color); imagepng ($im); function convATandDot($currenttext){ $old = array('__shariar__','__dot__'); $new = array('@','.'); $convTEXT= str_replace($old, $new, $currenttext); return $convTEXT; } ?>
আর ২য় ফাইল টিতে বসান নিচের কোড।
<?php $txt="[email protected]"; ?> <img src="image.php?img=<?php echo convATandDot($txt); ?>" border="0"> <?php function convATandDot($currenttext){ $old = array('@','.'); $new = array('__shariar__','__dot__'); $convTEXT= str_replace($old, $new, $currenttext); return $convTEXT; } ?>
অনেক কিছু শিখলাম