PHP Ionic Angularjs Phonegap AJAX Javascript CSS MySQL jQuery Forum

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

20 September 2014 By


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

Tags:: resize รูปภาพ ขนาด php

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

กรุณาล็อกอิน และลงชื่อติดตาม


สมัครสมาชิกได้ที่        ล็อกอินได้ที่   





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