วันนี้ Onlymycode มานำเสนอเทคนิคดี ๆ ที่ได้ใช้บ่อยอีกเทคนิคหนึ่ง นั้นก็คือการ Compress image file หรือที่ภาษาไทยเรียกว่า การลดขนาดรูปนั้นเอง ในวันนี้ทาง Onlymycode ขอนำเสนอเทคนิคอย่างง่ายก่อนนะครับ เพื่อง่ายสำหรับความเข้าใจ เผื่อท่านใดเป็นมือใหม่จะได้เข้าใจได้ ก่อนอื่น สามารถ Download ไปลองเล่นได้ ที่ปุ่มด้านล่าง
Download
ตัวอย่างหน้าจอ
ตัวอย่างการใช้งาน Code ลดขนาดไฟล์รูปภาพ Compress image PHP
Code HTML
ส่วน Code HTML เป็นส่วนของหน้า Form Submit ธรรมดา ๆ + มี Dropdown เพื่อกำหนดค่า Quality ของรูปที่เราต้องการ Compress ทั้งนี้ คุณสามารถเพิ่มรายการเข้าไปได้เพิ่มเติมเช่น
<option value="95">95</option>
<option value="85" selected>85</option>
เป็นต้น
<option value="85" selected>85</option>
เป็นต้น
<div class="container" style="margin-top: 30px;">
<div class="form-control" style="text-align: center">
<div class="pre_view">
<?php
if(file_exists($location)){
echo '<h1>Preview image</h1>';
echo '<img src="'.$location.'"><br>';
echo 'ลดขนาด จาก : '.round($fromSize / 1024, 2).'kb เป็น '.round($toSize / 1024, 2).'kb';
echo '<hr>';
}
?>
</div>
<form method='post' action='' enctype='multipart/form-data'>
<label>คุณภาพรูป (Compress quality) :
<select name="quality">
<option value="100">100</option>
<option value="90">90</option>
<option value="80" selected>80</option>
<option value="70">70</option>
<option value="60">60</option>
<option value="50">50</option>
</select>
</label>
<br>
<input type='file' name='imagefile' >
<input type='submit' value='Upload' name='upload'>
</form>
</div>
</div>
<div class="form-control" style="text-align: center">
<div class="pre_view">
<?php
if(file_exists($location)){
echo '<h1>Preview image</h1>';
echo '<img src="'.$location.'"><br>';
echo 'ลดขนาด จาก : '.round($fromSize / 1024, 2).'kb เป็น '.round($toSize / 1024, 2).'kb';
echo '<hr>';
}
?>
</div>
<form method='post' action='' enctype='multipart/form-data'>
<label>คุณภาพรูป (Compress quality) :
<select name="quality">
<option value="100">100</option>
<option value="90">90</option>
<option value="80" selected>80</option>
<option value="70">70</option>
<option value="60">60</option>
<option value="50">50</option>
</select>
</label>
<br>
<input type='file' name='imagefile' >
<input type='submit' value='Upload' name='upload'>
</form>
</div>
</div>
Function Compress File (เอาไปวางไว้บรรทัดแรกที่ส่วนของ Body เว็บ)
ตัวอย่างด้านล่างนี้เป็นการ Copress File ด้วยภาษา PHP นะครับ จะเป็นรูปแบบ Submit Post ธรรมดาไม่ได้มี Event อะไรพิเศษแต่อย่างใด อธิบายให้คือเลือกไฟล์รูป กด Upload ก็สามารถอัพโหลดรูป + ลดขนาดไฟล์ได้เลย
<?php
$location = '';
if(isset($_FILES['imagefile']['name'])){
// Getting file name
$filename = $_FILES['imagefile']['name'];
// Valid extension
$valid_ext = array('png','jpeg','jpg');
// Location
$location = "images/".$filename;
// file extension
$file_extension = pathinfo($location, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
// Check extension
if(in_array($file_extension,$valid_ext)){
$fromSize = filesize($_FILES['imagefile']['tmp_name']);
compressImage($_FILES['imagefile']['tmp_name'],$location,$_POST['quality']);
$toSize = filesize($location);
}else{
echo "Invalid file type.";
}
}
// Compress image
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
}
$location = '';
if(isset($_FILES['imagefile']['name'])){
// Getting file name
$filename = $_FILES['imagefile']['name'];
// Valid extension
$valid_ext = array('png','jpeg','jpg');
// Location
$location = "images/".$filename;
// file extension
$file_extension = pathinfo($location, PATHINFO_EXTENSION);
$file_extension = strtolower($file_extension);
// Check extension
if(in_array($file_extension,$valid_ext)){
$fromSize = filesize($_FILES['imagefile']['tmp_name']);
compressImage($_FILES['imagefile']['tmp_name'],$location,$_POST['quality']);
$toSize = filesize($location);
}else{
echo "Invalid file type.";
}
}
// Compress image
function compressImage($source, $destination, $quality) {
$info = getimagesize($source);
if ($info['mime'] == 'image/jpeg')
$image = imagecreatefromjpeg($source);
elseif ($info['mime'] == 'image/gif')
$image = imagecreatefromgif($source);
elseif ($info['mime'] == 'image/png')
$image = imagecreatefrompng($source);
imagejpeg($image, $destination, $quality);
}