ตัวอย่างฟังก์ชั่น php ที่จะแนะนำต่อไปนี้ เป็นการใช้งาน php จัดการเกี่ยวกับรูปภาพ
เช่น การลดขนาดรูปภาพ หรือ resize อย่างการสร้าง thumbnail เป็นต้น
เริ่มต้นให้เราสร้างไฟล์ php เปล่าชื่อ gen_thumbnail.php
โค้ดตามนี้เลย ไฟล์นี้เราเอาไว้สำหรับ include เพื่อเรียกใช้งาน
<?php function createthumb($name,$filename,$new_w,$new_h,$color_bg,$output_type,$show,$crop){ list($old_x,$old_y,$img_type)=getimagesize($name); switch($img_type) { case IMAGETYPE_JPEG: $src_img=imagecreatefromjpeg($name); $filename_base=basename($filename,".jpg"); break; case IMAGETYPE_GIF: $src_img=imagecreatefromgif($name); $filename_base=basename($filename,".gif"); break; case IMAGETYPE_PNG: $src_img=imagecreatefrompng($name); $filename_base=basename($filename,".png"); break; } $src_ratio=$old_x/$old_y; $dst_ratio=$new_w/$new_h; if($crop==1){ $thumb_w=($old_x*$new_h)/$old_y; $thumb_h=$new_h; $co_x=floor(($new_w-$thumb_w)/2); $co_y=0; }else{ if($old_x<=$new_w && $old_y<=$new_h){ $thumb_w=$old_x; $thumb_h=$old_y; $co_x=0; $co_y=0; }elseif($dst_ratio>$src_ratio){ $thumb_w=(int)($new_h*$src_ratio); $thumb_h=$new_h; $co_x=floor(($new_w-$thumb_w)/2); $co_y=0; }else{ $thumb_w=$new_w; $thumb_h=(int)($new_w/$src_ratio); $co_x=0; $co_y=floor(($new_h-$thumb_h)/2); } } if(strlen($color_bg)>=6){ if(strlen($color_bg)==6){ $R_color=hexdec(substr($color_bg,0,2)); $G_color=hexdec(substr($color_bg,2,2)); $B_color=hexdec(substr($color_bg,4,2)); }else{ $R_color=hexdec(substr($color_bg,1,2)); $G_color=hexdec(substr($color_bg,3,2)); $B_color=hexdec(substr($color_bg,5,2)); } } $dst_img=imagecreatetruecolor($new_w,$new_h); if(strlen($color_bg)==0){ imagecolortransparent($dst_img, $color_bg); }else{ $color_bg=imagecolorallocate($dst_img,$R_color,$G_color,$B_color); imagefill($dst_img,0,0,$color_bg); } imagecopyresampled($dst_img, $src_img, $co_x, $co_y, 0, 0, $thumb_w, $thumb_h, $old_x, $old_y); if($output_type!=""){ if($output_type=="gif"){ $img_type=IMAGETYPE_GIF; $filename=$filename_base.".gif"; }elseif($output_type=="png"){ $img_type=IMAGETYPE_PNG; $filename=$filename_base.".png"; }else{ $img_type=IMAGETYPE_JPEG; $filename=$filename_base.".jpg"; } } switch($img_type) { case IMAGETYPE_JPEG: if($show==1){ header('Content-Type: image/jpeg'); imagejpeg($dst_img, null, 90); }else{ imagejpeg($dst_img,$filename,90); } break; case IMAGETYPE_GIF: if($show==1){ header('Content-Type: image/gif'); imagegif($dst_img); }else{ imagegif($dst_img,$filename); } break; case IMAGETYPE_PNG: if($show==1){ header('Content-Type: image/png'); imagepng($dst_img); }else{ imagepng($dst_img,$filename); } break; } imagedestroy($dst_img); imagedestroy($src_img); } ?>
ตัวอย่างการใช้งาน
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>"img/Dock.jpg", // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>"thumbmypic1.jpg", // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>100, // กำหนดความกว้างรูปใหม่ "height"=>100, // กำหนดความสูงรูปใหม่ "background"=>"", // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>"", // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>0, // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>0 // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
มาดูการเอาไปใช้งานในแต่ละแบบ
1. การสร้างไฟล์ thumbnail หรือ resize แบบ crop
ตัวอย่างนี้เป็นการปรับขนาดรูปภาพ แล้วสร้างเป้นรูปใหม่ โดยจะ crop หรือตัด
ขนาดของรูปให้ได้ตามที่กำหนด โดยหากมีส่วนของรูปส่วนใหญ่ที่เกินขอบเขต
ก็จะถูกตัดออก
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>"img/oldfile.jpg", // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>"newfile.jpg", // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>100, // กำหนดความกว้างรูปใหม่ "height"=>100, // กำหนดความสูงรูปใหม่ "background"=>"", // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>"", // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>0, // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>1 // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
2. การเปลี่ยนไฟล์จาก jpg เป้น png
จะได้ไฟล์ newfile.png มีพื้นหลังเป็นสีขาว
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>"img/oldfile.jpg", // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>"newfile.png", // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>100, // กำหนดความกว้างรูปใหม่ "height"=>100, // กำหนดความสูงรูปใหม่ "background"=>"#FFFFFF", // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>"png", // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>0, // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>0 // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
3. การเปลี่ยนพื้นหลังไฟล์ gif และ png เป็นโปรงใส
กำหนด output เป็น gif หรือ png และกำหนด background เป็นค่าว่าง
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>"img/oldfile.jpg", // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>"newfile.gif", // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>100, // กำหนดความกว้างรูปใหม่ "height"=>100, // กำหนดความสูงรูปใหม่ "background"=>"", // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>"gif", // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>0, // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>0 // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
4. การแสดงรูปภาพโดยไม่ต้องบันทึกเป็นไฟล์ใหม่
กำหนด show=1
สมมติไฟล์เราชื่อ show_pic.php
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>"img/oldfile.jpg", // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>"show_pic.png", // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>100, // กำหนดความกว้างรูปใหม่ "height"=>100, // กำหนดความสูงรูปใหม่ "background"=>"", // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>"png", // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>1, // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>0 // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
เวลาเราเรียอกใช้งานไฟล์รูปภาพที่สร้างจาก php และการ resize
<img src="show_pic.php">
5. การส่งค่าเพื่อแสดงรูปภาพ url
วิธีนี้จะเป็นการประยุกต์แสดงรูปภาพที่เรามีอยู่แล้ว ออกมาในขนาดต่างๆ
โดยที่ไม่ต้องสร้างเป็นไฟล์เก็บไว้ ซึ่งจะกินพื้นที่จัดเก็บ ทำให้การกำหนดและเรียกใช้ไฟล์
รูปภาพยืดหยุ่น นำไปใช้งานได้หลากหลาย
เช่น เรามีภาพชื่อ oldpic.jpg ขนาด 800 x 1200
ต้องการเรียกใฟล์มาแสดง โดยแสดงไฟล์เป็นขนาด 100 x 100
สร้างไฟล์ชื่อ show_pic.php
<?php include("gen_thumbnail.php"); ?> <?php $cfg_thumb= (object) array( "source"=>$_GET['src'], // ตำแหน่งและชื่อไฟล์ต้นฉบับ "destination"=>$_GET['dst'], // ตำแแหน่งและชื่อไฟล์ที่สร้างใหม่ ถ้าเลือกสร้างเป็นไฟล์ใหม่ "width"=>$_GET['w'], // กำหนดความกว้างรูปใหม่ "height"=>$_GET['h'], // กำหนดความสูงรูปใหม่ "background"=>$_GET['bg'], // กำหนดสีพื้นหลังรูปใหม่ (#FF0000) ถ้าไม่กำหนดและ เป็น gif หรือ png จะแสดงเป็นโปร่งใส "output"=>$_GET['output'], // กำหนดนามสกุลไฟล์ใหม่ jpg | gif หรือ png ถ้าไม่กำหนด จะใช้ค่าเริ่มต้นจากต้นฉบับ "show"=>$_GET['show'], // แสดงเป็นรูปภาพ หรือสร้างเป็นไฟล์ 0=สร้างเป็นไฟล์ | 1=แสดงเป็นรูปภาพ "crop"=>$_GET['crop'] // กำหนด crop หรือ ไม่ 0=crop | 1=crop ); createthumb( $cfg_thumb->source, $cfg_thumb->destination, $cfg_thumb->width, $cfg_thumb->height, $cfg_thumb->background, $cfg_thumb->output, $cfg_thumb->show, $cfg_thumb->crop ); ?>
เวลาเราเรียอกใช้งานไฟล์รูปภาพที่สร้างจาก php และการ resize
<img src="show_pic.php?src=oldpic.jpg&dst=&w=100&h=100&bg=ffffff&output=&show=1&crop=">
หรือแบบย่อ
<img src="show_pic.php?src=oldpic.jpg&w=100&h=100&bg=ffffff&show=1">
เท่านี้ก็ได้ฟังก์ชั่น จัดการเกี่ยวกับรูปภาพได้หลายรูแบบ และยังสามารถนำไป
ประยุกต์เพิ่มเติม ให้เข้าการใช้งานของแต่ละคนได้