รวมเทคนิคต่าง ๆ ในการพัฒนาระบบ ที่น่าสนใจ รวมไว้ที่เดียว มีอะไรสอบถาม สามารถติดต่อผ่านช่องผ่าน Fanpage เราได้เลย

วันเสาร์ที่ 16 พฤษภาคม พ.ศ. 2563

ลดขนาดไฟล์รูปภาพตอนอัพโหลด ด้วยเทคนิค Compress image PHP

Share:


วันนี้ 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>

เป็นต้น
<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>

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);

}





Share:

บทความที่ได้รับความนิยม

Search

บทความอื่น ๆ