การประยุกต์ resize ขนาดรูปภาพ ด้วย php ในแบบต่างๆ

เขียนเมื่อ 9 ปีก่อน โดย Ninenik Narkdee
php รูปภาพ ขนาด resize

คำสั่ง การ กำหนด รูปแบบ ตัวอย่าง เทคนิค ลูกเล่น การประยุกต์ การใช้งาน เกี่ยวกับ php รูปภาพ ขนาด resize

ดูแล้ว 11,230 ครั้ง


ตัวอย่างฟังก์ชั่น 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">
 
 
เท่านี้ก็ได้ฟังก์ชั่น จัดการเกี่ยวกับรูปภาพได้หลายรูแบบ และยังสามารถนำไป
ประยุกต์เพิ่มเติม ให้เข้าการใช้งานของแต่ละคนได้
 


กด Like หรือ Share เป็นกำลังใจ ให้มีบทความใหม่ๆ เรื่อยๆ น่ะครับ








เนื้อหาพิเศษ เฉพาะสำหรับสมาชิก

กรุณาล็อกอิน เพื่ออ่านเนื้อหาบทความ

ยังไม่เป็นสมาชิก

สมาชิกล็อกอิน



( หรือ เข้าใช้งานผ่าน Social Login )




URL สำหรับอ้างอิง





คำแนะนำ และการใช้งาน

สมาชิก กรุณา ล็อกอินเข้าระบบ เพื่อตั้งคำถามใหม่ หรือ ตอบคำถาม สมาชิกใหม่ สมัครสมาชิกได้ที่ สมัครสมาชิก


  • ถาม-ตอบ กรุณา ล็อกอินเข้าระบบ
  • เปลี่ยน


    ( หรือ เข้าใช้งานผ่าน Social Login )







เว็บไซต์ของเราให้บริการเนื้อหาบทความสำหรับนักพัฒนา โดยพึ่งพารายได้เล็กน้อยจากการแสดงโฆษณา โปรดสนับสนุนเว็บไซต์ของเราด้วยการปิดการใช้งานตัวปิดกั้นโฆษณา (Disable Ads Blocker) ขอบคุณครับ