
Bu yazıda, PHP ile resim yükleme ve otomatik yeniden boyutlandırma işlemlerinin nasıl yapılabileceğini ele alacağız. Bu işlem, web uygulamaları için oldukça yaygın ve faydalı bir özelliktir. Kullanıcıların yüksek kaliteli resimler yüklemesi ve görüntülenmesi, web sitelerinin daha profesyonel ve kullanıcı dostu görünmesini sağlar.
İlk olarak, PHP ile resim yükleme işlemini ele alalım. Bu işlemi gerçekleştirmek için öncelikle bir HTML formu oluşturmanız gerekiyor. Bu form, kullanıcıların resimleri seçip yüklemelerine olanak tanır. Formda "enctype" niteliğinin "multipart/form-data" olarak belirtilmesi gerekiyor. Bu, form verilerinin bir dosya yüklemesi içereceğini belirtir.
Form oluşturulduktan sonra, PHP koduyla form verileri alınabilir. "$_FILES" dizisi kullanılarak, yüklenen dosyanın bilgileri ve geçici dosya adı gibi bilgiler elde edilebilir. Ardından, resmi sunucuya kaydetmek için "move_uploaded_file()" fonksiyonu kullanılır. Bu fonksiyon, belirtilen geçici dosyayı sunucuda belirtilen dizine taşır.
Resim yükleme işlemi tamamlandıktan sonra, resim boyutunu otomatik olarak yeniden boyutlandırmak isteyebilirsiniz. Bu işlem için PHP'nin "GD" kütüphanesi kullanılabilir. Bu kütüphane, resimleri yeniden boyutlandırmak, kesmek, döndürmek ve diğer birçok işlemi yapmak için kullanılabilir.
Resmi yeniden boyutlandırmak için "imagecreatetruecolor()" fonksiyonu kullanılabilir. Bu fonksiyon, belirtilen genişlik ve yükseklikte yeni bir resim oluşturur. Ardından, "imagecopyresampled()" fonksiyonu kullanılarak orijinal resim yeni boyutlara yeniden boyutlandırılır.
İşte örnek bir PHP kodu:
<?php //Resim yükleme işlemi if(isset($_FILES['resim'])){ $dosya_adi = $_FILES['resim']['name']; $dosya_tipi = $_FILES['resim']['type']; $gecici_dosya = $_FILES['resim']['tmp_name']; $hedef_dizin = "uploads/"; $hedef_dosya = $hedef_dizin . $dosya_adi; move_uploaded_file($gecici_dosya, $hedef_dosya); //Resmi yeniden boyutlandırma işlemi $yeni_genislik = 500; $yeni_yukseklik = 500; list($genislik, $yukseklik) = getimagesize($hedef_dosya); $yeni_resim = imagecreatetruecolor($yeni_genislik, $yeni_yukseklik); $eski_resim = imagecreatefromjpeg($hedef_dosya); imagecopyresampled($yeni_resim, $eski_resim, 0, 0, 0, 0, $yeni_genislik, $yeni_yukseklik, $genislik, $yukseklik); imagejpeg($yeni_resim, $hedef_dosya, 100); imagedestroy($eski_resim); imagedestroy($yeni_resim); } ?>
Yukarıdaki kod, önce yüklenen resmi belirtilen klasöre kaydeder. Daha sonra, resmin genişliğini ve yüksekliğini belirler ve yeni bir resim oluşturur. Oluşturulan yeni resim, orijinal resmin yeniden boyutlandırılmış haliyle doldurulur. Son olarak, yeni resim belirtilen klasöre kaydedilir ve bellekten silinir.
Bu işlemi gerçekleştirmek için, sunucunuzda "GD" kütüphanesinin yüklü olduğundan emin olmalısınız. Eğer yüklü değilse, PHP'nin "gd" eklentisini yükleyebilirsiniz.
Aşağıdaki adım adım klavuz ile JPG, JPEG, PNG, GIF türünden de bir küçük resim oluşturabilirsiniz.
Adım 1: HTML Formu Oluşturma
Burada, dosya giriş etiketiyle ve enctype=”multipart/form-data” form Enctype yöntemiyle bir form tanımlamamız gerekiyor. Bu, bir görüntü dosyasını seçmemize ve bir PHP betiğine göndermemize yardımcı olacaktır.
<form action="" method="post" enctype="multipart/form-data"> <div class="form-group"> <lable class="">Resim Seçin</lable> <input type="file" name="upload_image" required /> </div> <input type="submit" name="form_submit" class="btn btn-primary" value="Gönder" /> </form>
Adım 2: Boyutlandırma PHP Betiği
Burada, bir görüntü yükleme işleme betiği tanımlayacağız ve orijinal dosyadan küçük resim görüntüleri oluşturacağız. Bu adımda, orijinal resim dosyasını da kaydedebilirsiniz, ancak bunun için değişkenleri güncellemeniz gerekebilir.
<?php function resizeImage($resourceType,$image_width,$image_height) { $resizeWidth = 100; $resizeHeight = 100; $imageLayer = imagecreatetruecolor($resizeWidth,$resizeHeight); imagecopyresampled($imageLayer,$resourceType,0,0,0,0,$resizeWidth,$resizeHeight, $image_width,$image_height); return $imageLayer; } if(isset($_POST["form_submit"])) { $imageProcess = 0; if(is_array($_FILES)) { $fileName = $_FILES['upload_image']['tmp_name']; $sourceProperties = getimagesize($fileName); $resizeFileName = time(); $uploadPath = "./uploads/"; $fileExt = pathinfo($_FILES['upload_image']['name'], PATHINFO_EXTENSION); $uploadImageType = $sourceProperties[2]; $sourceImageWidth = $sourceProperties[0]; $sourceImageHeight = $sourceProperties[1]; switch ($uploadImageType) { case IMAGETYPE_JPEG: $resourceType = imagecreatefromjpeg($fileName); $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight); imagejpeg($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt); break; case IMAGETYPE_GIF: $resourceType = imagecreatefromgif($fileName); $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight); imagegif($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt); break; case IMAGETYPE_PNG: $resourceType = imagecreatefrompng($fileName); $imageLayer = resizeImage($resourceType,$sourceImageWidth,$sourceImageHeight); imagepng($imageLayer,$uploadPath."thump_".$resizeFileName.'.'. $fileExt); break; default: $imageProcess = 0; break; } move_uploaded_file($file, $uploadPath. $resizeFileName. ".". $fileExt); $imageProcess = 1; } if($imageProcess == 1){ ?> <div class="alert icon-alert with-arrow alert-success form-alter" role="alert"> <i class="fa fa-fw fa-check-circle"></i> <strong> Success ! </strong> <span class="success-message"> Image Resize Successfully </span> </div> <?php }else{ ?> <div class="alert icon-alert with-arrow alert-danger form-alter" role="alert"> <i class="fa fa-fw fa-times-circle"></i> <strong> Note !</strong> <span class="warning-message">Invalid Image </span> </div> <?php } $imageProcess = 0; } ?>
Adım 3: Yeniden Boyutlandırılmış Resmi Görüntüleme ve İndirme
Bu adımda, yeniden boyutlandırılmış resmi görüntülemek ve indirmek için HTML kodu kullanıyoruz. Burada küçük resmin indirme bağlantısı da bulunuyor.
<div class="row"> <div class="col-md-4"> <img class="img-rounded img-responsive" class="lazyload img-fullwidth" src="https://cdn.webtrsite.com/images/empty.webp" data-src="<?php echo $uploadPath."thump_".$resizeFileName.'.'. $fileExt; ?>" width="<?php echo $new_width; ?>" height="<?php echo $new_height; ?>" > <h4><b>Thump Image</b></h4> <a href="<?php echo $uploadPath."thump_".$resizeFileName.'.'. $fileExt; ?>" download class="btn btn-danger"><i class="fa fa-download"></i> Download </a href=""> </div> <div class="col-md-8"> <img class="img-rounded img-responsive" class="lazyload img-fullwidth" src="https://cdn.webtrsite.com/images/empty.webp" data-src="<?php echo $uploadPath.$resizeFileName.'.'. $fileExt; ?>" > <h4><b>Original Image</b></h4> </div> </div>
Sonuç olarak, PHP ile resim yükleme ve otomatik yeniden boyutlandırma işlemleri oldukça faydalıdır ve web uygulamalarının daha profesyonel görünmesini sağlar. Yukarıdaki kodu kullanarak, kendi projelerinizde bu işlemi kolayca gerçekleştirebilirsiniz.