pico hosting ผู้ให้บริการ Web hosting จดโดเมนราคาประหยัด  

บทความ: email2img แปลง E-mail เป็นรูปภาพ

Webmaster หลายๆคนคงเคยเจอปัญหา เอาอีเมล์ของเราติดไว้ที่เว็บไซต์ แล้วเจอ spam เข้ามาเก็บอีเมล์ แล้วเอาไปส่ง spam mail มาให้เรา บางคนแก้ปัญหาโดยการทำอีเมล์สำหรับติดต่อ ให้เป็นรูปภาพแล้วเอาไปติดบนเว็บ แบบนี้ก็ช่วยแก้ปัญหาได้ครับ แต่มันไม่สะดวกในการแก้ไขหรือเปลี่ยนแปลงอีเมล์ วันนี้ผมเลยแนะนำอีกวิธีหนึ่งนั่นคือการแปลง e-mail address ไปเป็นรูปภาพโดยใช้ PHP script ซึ่งวิธีนี้จะสะดวกในการนำไปใช้งาน และแก้ไขเปลี่ยนแปลง email address

การนำ email2img ไปใช้งาน เครื่องที่รัน php อยู่จะต้องเปิดใช้งาน GD, Freetype และต้องมี font สำหรับแปลง email เป็น รูปภาพด้วย โดยในตัวอย่างนี้จะใช้ฟอนต์ arial.ttf ครับ

Source code ของ email2img.php
<?php
############################################################
# email2img email to image generator
# Author Jirawat Kongkaen
# http://www.picohosting.com
############################################################
$font = 'arial.ttf';
$fontsize = 10;
$angle = 0;
$x = 0;
$y = 9;

# ป้องกัน hotlink จากเว็บอื่น if(isset($_SERVER['HTTP_REFERER'])) { if(!eregi("www.picohosting.com", $_SERVER['HTTP_REFERER'])) { $email = 'Access denied!'; } } else { $email = 'Access denied!'; }
# get email address if(empty($email)) { if(isset($_REQUEST['e'])) $email = $_REQUEST['e']; else $email = 'Email is empty!'; } # รับค่าสีของอีเมล์มา แล้วมาแปลงเป็น integer if(isset($_REQUEST['c'])) { $tr = hexdec($_REQUEST['c'][0].$_REQUEST['c'][1]); $tg = hexdec($_REQUEST['c'][2].$_REQUEST['c'][3]); $tb = hexdec($_REQUEST['c'][4].$_REQUEST['c'][5]); } # ถ้าไม่ได้ใส่ค่าสีมากับ url จะใช้สีต่อไปนี้เป็นค่า default else { $tr = 20; $tg = 40; $tb = 100; }
# คำนวณขนาดของรูปภาพที่จะสร้างขึ้น $box = imagettfbbox($fontsize, $angle, $font, $email); $width = $box[2] - $box[6]; $height = $box[3] - $box[7];
# สร้างรูปภาพขึ้นมาใหม่ $image = imagecreate($width, $height); $backgroundcolor = imagecolorallocatealpha ($image, 255, 255, 255, 127);
# กำหนดสีของตัวอักษร และแปลงอีเมล์ให้เป็นรูปภาพ $textcolor = imagecolorallocate($image, $tr, $tg, $tb); imagettftext($image, $fontsize, $angle, $x, $y, $textcolor, $font , $email) or die('Cannot generate image!');
# ส่งข้อมูลของรูปภาพไปให้ browser header('Content-Type: image/png'); imagepng($image) or die('imagepng error!'); imagedestroy($image); exit(); ?>


การเรียกใช้งานไฟล์ email2img.php ต้องส่งค่าตัวแปลไปให้ไฟล์ดังกล่าวสองค่า คือตัวแปล e สำหรับส่งค่า email address และตัวแปล c สำหรับส่งค่าสีของตัวอักษรที่ต้องการ สำหรับตัวแปล c ถ้าไม่กำหนดไว้จะมีค่า default อยู่แล้ว

ตัวอย่างการแทรก รูปภาพใน html ด้วย email2img
<center>Contact :<img src="./email2img.php?e=email@somedomain.com&c=ff0000"></center>
ผลที่ได้
Contact :


สำหรับสีของตัวอักษรที่ส่งไปกับ url นั้นใช้ค่าสีแบบฐาน 16 จำนวน 6 byte ตามมาตราฐานของ html ได้เลยครับ

ใครที่นำบทความไปเผยแพร่ที่เว็บไซต์อื่น กรุณาทำลิ้งค์กลับมายังบทความต้นฉบับด้วยนะครับ