Dijital Ürün Alış ve Satışı için: Buraya Tıkla

PHP ile Resim Boyutunu Sıkıştırma

Yapacağımız işlem görüntü boyutunu küçültürken, aynı zamanda kalitesini de düşürür. Bundan dolayı görüntü işleme kalitesi orantılı şekilde yönetmeniz gerekecektir.

Büyük boyutlu bir görüntünün bir web sayfasının yüklenmesi daha fazla zaman alır. Sayfa yükleme süresini etkilemeden büyük bir resim yüklemek istiyorsanız, boyutu küçültmek için resmin optimize edilmesi gerekir. Görüntü sıkıştırma, görüntünün boyutunu küçültmek için çok yararlıdır. Çoğu durumda, kullanıcı web sitesi aracılığıyla yüklerken görüntüyü optimize etmez. Görüntüleri sunucuya yüklemeden önce sıkıştırmak ve dosya boyutunu optimize etmek her zaman iyi bir fikirdir.

Yüklemeden önce görüntüyü sıkıştırın ve optimize edin, PHP kullanılarak kolayca uygulanabilir. Görüntü sıkıştırma işlevinde, yüklemeden önce dosya boyutu küçültülür. Sıkıştırılmış görüntü, sunucunun depolama kullanımının azaltılmasına ve web sayfasının daha hızlı yüklenmesine yardımcı olur.  PHP kullanarak yüklemeden önce görüntüyü nasıl sıkıştıracağınızı göstereceğiz .

Dosya Yükleme Formu

Dosya giriş alanı ve gönder düğmesi olan bir HTML formu oluşturun. form > etiketinin aşağıdaki öznitelikleri içerdiğinden emin olun .

  • method="post"
  • enctype="multipart/form-data"

HTML FORM

<form action="upload.php" method="post" enctype="multipart/form-data">
    <label>Select Image File:</label>
    <input type="file" name="image">
    <input type="submit" name="submit" value="Upload">
</form>

upload.phpForm gönderiminden sonra, dosya verileri daha fazla işlenmek üzere dosyaya gönderilir .

PHP ile Görüntüyü Sıkıştırın ve Yükleyin

Dosya upload.php, görüntü sıkıştırma ve karşıya yükleme işlemlerini gerçekleştirir.

compresImage (), PHP kullanarak sunucuda görüntüyü sıkıştırmaya ve kaydetmeye yardımcı olan özel bir işlevdir. Bu işlev aşağıdaki parametreleri kabul eder ve sıkıştırılmış görüntüyü döndürür.

  • $source– Boyutu sıkıştırmak için bir görüntü dosyası kaynağı.
  • $destination– Sıkıştırılmış görüntüyü kaydetmek için sunucu yolu.
  • $quality- Görüntü kalitesi.
<?php
function compressImage($source, $destination, $quality) {
    // Get image info
    $imgInfo = getimagesize($source);
    $mime = $imgInfo['mime'];
    // Create a new image from file
    switch($mime){
        case 'image/jpeg':
            $image = imagecreatefromjpeg($source);
            break;
        case 'image/png':
            $image = imagecreatefrompng($source);
            break;
        case 'image/gif':
            $image = imagecreatefromgif($source);
            break;
        default:
            $image = imagecreatefromjpeg($source);
    }
    // Save image
    imagejpeg($image, $destination, $quality);
    // Return compressed image
    return $destination;
}

convert_filesize (), dosya boyutunu insan tarafından okunabilir bir biçime dönüştürmek için kullanılan özel bir işlevdir. Bu işlev aşağıdaki parametreleri kabul eder ve boyutu KB/MB/GB/TB/vb cinsinden döndürür.

  • $bytes– Bayt cinsinden dosya boyutu
  • $decimals- Ondalık.
function convert_filesize($bytes, $decimals = 2) {
    $size = array('B','KB','MB','GB','TB','PB','EB','ZB','YB');
    $factor = floor((strlen($bytes) - 1) / 3);
    return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$size[$factor];
}

Bir dosya gönderildiğinde:

  • PHP $_FILES yöntemini kullanarak dosya bilgilerini alın .
  • Boyutu sıkıştırın ve compressImage()işlevi kullanarak resmi yükleyin.
  • Optimize edilmiş dosya boyutunu alın ve PHP kullanarak convert_filesize() işlevi kullanarak dönüştürün.
// File upload path
$uploadPath = "uploads/";
$statusMsg = '';
$status = 'danger';
// If file upload form is submitted
if(isset($_POST["submit"])){
    // Check whether user inputs are empty
    if(!empty($_FILES["image"]["name"])) {
        // File info
        $fileName = basename($_FILES["image"]["name"]);
        $imageUploadPath = $uploadPath . $fileName;
        $fileType = pathinfo($imageUploadPath, PATHINFO_EXTENSION);
        // Allow certain file formats
        $allowTypes = array('jpg','png','jpeg','gif');
        if(in_array($fileType, $allowTypes)){
            // Image temp source and size
            $imageTemp = $_FILES["image"]["tmp_name"];
            $imageSize = convert_filesize($_FILES["image"]["size"]);
            // Compress size and upload image
            $compressedImage = compressImage($imageTemp, $imageUploadPath, 75);
            if($compressedImage){
                $compressedImageSize = filesize($compressedImage);
                $compressedImageSize = convert_filesize($compressedImageSize);
                $status = 'success';
                $statusMsg = "Image compressed successfully.";
            }else{
                $statusMsg = "Image compress failed!";
            }
        }else{
            $statusMsg = 'Sorry, only JPG, JPEG, PNG, & GIF files are allowed to upload.';
        }
    }else{
        $statusMsg = 'Please select an image file to upload.';
    }
}

Yüklenen görüntüyü ve optimize edilmiş dosya boyutu bilgisini görüntüleyin.

<!-- Status message -->
<?php echo $statusMsg; ?>
<?php if(!empty($compressedImage)){ ?>
    <p><b>Original Image Size:</b> <?php echo $imageSize; ?></p>
    <p><b>Compressed Image Size:</b> <?php echo $compressedImageSize; ?></p>
    <img src="<?php echo $compressedImage; ?>"/>
<?php } ?>

Genellikle, PHP'de dosya yüklemek için move_uploaded_file() işlevi kullanılır . Ancak yüklemeden önce görüntüyü sıkıştırmak isterseniz, özel PHP işlevimiz ( compressImage()) çok kullanışlıdır. Örnek kod, görüntü dosyasını herhangi bir sıkıştırma kitaplığı kullanmadan sıkıştırmanıza yardımcı olur . Sıkıştırma komut dosyamızla, farklı türde görüntü dosyalarını (JPG, JPEG, PNG ve GIF) sıkıştırabilirsiniz.


henüz yorum yok
Tema Ayarları

Kendi özelleştirilmiş stilini belirle

Mod Seç

Uygulamanız için mükemmel renk modunu seçin.


RTL Mode

Dil yönünüzü değiştirin


Fluid Layout

Tam ekran modu aç/kapat


Navigasyon Konumu

Web sitesi için uygun bir menü sistemi seçin


Görünüm