Takip et

PHP ile Yüklenen Resmin Boyutunu Sıkıştırma – Compress

Yüksek kaliteli görsellerin, internet ortamında web sayfasında yüklenmesi zaman alır. Özellikle site açılış hızlarının çok önemli olduğu bu dönemlerde sisteminize yüklenen görselleri sıkıştırmak, boyut açısından size çok büyük fayda sağlayacaktır.

Yüklerken birden çok boyutta görüntü dosyası oluşturabilir ve gerektiğinde düşük ve yüksek kaliteli görüntüleri kullanabilirsiniz. Örn: kalite1/1.jpg kalite2/1.jpg gibi.

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.

Dilerseniz başlayalım.

HTML

Form içerisinde görsel yüklebileceğimiz bir File elementi oluşturalım.

<form method='post' action='' enctype='multipart/form-data'>
  <input type='file' name='imagefile' >
  <input type='submit' value='Upload' name='upload'> 
</form>

PHP

Yüklenen görseli alalım. Ve compressImage() fonksiyonu ile sıkıştırma işlemini yapalım.

Bu fonksiyon 3 adet parametre alır;

  1. Kaynak dosya
  2. Hedef dosya
  3. Kalite
<?php
if(isset($_POST['upload'])){

  // Dosya adını alalım
  $filename = $_FILES['imagefile']['name'];
 
  // Gelen dosya bir görsel mi?
  $valid_ext = array('png','jpeg','jpg');

  // Nereye kaydedelim?
  $location = "images/".$filename;

  // dosya uzantısı işlemleri
  $file_extension = pathinfo($location, PATHINFO_EXTENSION);
  $file_extension = strtolower($file_extension);

  // uzantı kontrolü
  if(in_array($file_extension,$valid_ext)){

    // Resmi sıkıştıralım. Kalitesi 60 olsun. 
    compressImage($_FILES['imagefile']['tmp_name'],$location,60);

  }else{
    echo "Bilinmeyen dosya uzantısı.";
  }
}

// görsel sıkıştırma fonksiyonumuz
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);

}

?>

Sonuç

Örnekte, orijinal boyuttaki görüntüyü değil, yalnızca sıkıştırılmış görüntüyü sakladık. Siz yükleme sırasında görüntülerin her iki sürümünü de saklayabilirsiniz.

Boyutu küçültürken görüntü kalitesini de ayarlamayı unutmayın.

Bu makaleyi yararlı bulduysanız paylaşmayı unutmayın. Teşekkür eder, herkese kolaylıklar dilerim.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.