php compressimage fonksiyonu ile resim sıkıştırma imagecreatefromjpeg

Merhaba arkadaşlar, sitenize ekleyeceğiniz resimleri photoshop ai gibi programlarla ya da online sıkıştırma siteleri ile sıkıştırabileceğiniz gibi php de resmi yüklerken de sıkıştırabilirsiniz. Bunun için ihtiyacımız olan imagecreatefromjpeg fonksiyonunu çalıştırmak için birkaç kontrol ve bunları içeren bir fonksiyon. php compressimage fonksiyonu ile resim sıkıştırma işlemi iş yükünüzü azaltacak bir çözüm.

Ben bir yabancı sitedeki örneği kendime göre kısmen değiştirdim ve kendi projemde kullandım. Açıklama yazacak vaktim olduğunda yazıyı güncelleyip detaylı anlatacağım ancak acil ihtiyacı olan olursa diye buraya örneği bırakıyorum.

//daah önce yaptığım işlemlerden bu fonksiyon için gereken değişkenler
$files = array(); 
foreach ($_FILES["file"] as $k => $l) {
foreach ($l as $i => $v) {
if (!array_key_exists($i, $files)) $files[$i] = array();
$files[$i][$k] = $v;
  }
}
$imgklasoryolu = "img/ban/".$klasoradi";
foreach ($files as $file) {
// kontroller için compressImage fonksiyonu oluşturuyoruz
function compressImage($source, $destination, $quality) {
//uzantıya göre farklı php fonksiyoun çalıştırılacak. o yüzden uzantı kontrollerine göre if else işlemleri yapıyoruz
  if ($source['type'] == 'image/jpeg') 
    $image = imagecreatefromjpeg($source["tmp_name"]);
  elseif ($source['type'] == 'image/gif') 
    $image = imagecreatefromgif($source["tmp_name"]);
  elseif ($source['type'] == 'image/png') 
    $image = imagecreatefrompng($source["tmp_name"]);
//resim aıkıştırma taşıma işlemini sağlayan php fonksiyonu
  imagejpeg($image, $destination, $quality);
}			
  // resim için yeni isim
  $filename = $file["name"];
  // izin veirlen uzantılar
  $valid_ext = array('png','jpeg','jpg','webp');
  // taşınacak klasör yolu
  $location = $imgklasoryolu."/".$filename; 
  // uzantıyı çek
  $file_extension = pathinfo($location, PATHINFO_EXTENSION);
  $file_extension = strtolower($file_extension);
  // resim uzantısını kontrol et
  if(in_array($file_extension,$valid_ext)){ 
    // Compress Image
    compressImage($file,$location,60);
  }	
}

Hazırladığımız compressImage fonksiyonu sayesinde resimlerin kalitesini belirleyebiliyoruz.Ve hem sıkıştırıyoruz hem istediğimiz klasöre taşıyoruz. Ben projemde her bannerı 3 farklı boyutta kaydedip farklı ekran boyutlarına göre hangisi uygunsa onu göstermesini sağlıyorum. Bu fonksiyon bannerlarım için uygun oldu.

Resim işlemleri ile ilgili Verot Sınıfı ‘nı da tavsiye ederim. Resim kalitesi, boyut gibi değişkenlere müdahale edebildiğiniz çok yönlü bir sınıftır verot.

Yazılıma dair karşılaştığım sorunlara dair çözüm yöntemlerinin devamı için tıklayın.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir