v2.5.2
Giriş yap

Php resim yüklerken dosya küçültme (file upload resizer)

behzatcemalakgun
69 defa görüntülendi

Merhaba,

Php ile database bağlantılı bir scriptim mevcut. Fakat dosyaları yüklerken küçültmek istiyorum.

Sayfalarda gördüğüm şeyleri deniyorum fakat tam anlamı ile başaramadım.

Yapmak istediğim dosya yüklenirken mümkün olan en düşük boyutta yüklensin, ben burada sadece kişi resmi yüklüyorum.

Yardımcı olmanız mümkün mü ?

Şimdiden teşekkür ederim..


<?php

include '../../include/db.php';


$zaman = time(); // Dosya isimlerinin karışmaması için random değer üretmek adına time fonksiyonunu kullanıyoruz.

$dosya_tmp = $dosya['tmp_name']; // Gelen dosyanın tmp adını tanımlıyoruz.
$dosya_tmp = trim($dosya_tmp);
$dosya_tmp = str_replace(" ", "", $dosya_tmp);

if ($_FILES["resim"]) {


////// DOSYA SİL
	//Eski dosyayı sorgula
	$resimsorgula 	 = mysqli_query($con, "SELECT * FROM `geciskartlari` WHERE `submission_id` = '$kart_id'");
	while($resimayir = mysqli_fetch_array($resimsorgula, MYSQL_ASSOC)){
	$resim			 = 	''.$resimayir["resim"].'';
	}
	//Dosyayı sil
	unlink("../../uploads/$resim");
	//$del = @unlink("../../uploads/$resim");
////// DOSYA SİL
	

$yol = "../../uploads/";

  $yuklemeYeri = __DIR__ . DIRECTORY_SEPARATOR . $yol . DIRECTORY_SEPARATOR . $zaman . $_FILES["resim"]["name"];
  $yuklemeYeri = trim($yuklemeYeri);
  $yuklemeYeri = str_replace(" ", "", $yuklemeYeri);
  
  $yuklenendosyaadi = $zaman . $_FILES["resim"]["name"] ;
  $yuklenendosyaadi = trim($yuklenendosyaadi);
  $yuklenendosyaadi = str_replace(" ", "", $yuklenendosyaadi);

  if ( file_exists($yuklemeYeri) ) {

      echo "Dosya daha önceden yüklenmiş";

  } else {

      if ($_FILES["resim"]["size"]  > 640000000) {

          echo "Dosya boyutu sınırı";

      } else {

          $dosyaUzantisi = pathinfo($_FILES["resim"]["name"], PATHINFO_EXTENSION);

         if ($dosyaUzantisi != "jpg" && $dosyaUzantisi != "jpeg" && $dosyaUzantisi != "png" && $dosyaUzantisi != "pdf" && $dosyaUzantisi != "tif" && $dosyaUzantisi != "tiff") { # Dosya uzantı kontrolü

              echo "Sadece jpg, jpeg, png uzantılı dosyalar yüklenebilir.";

          } else {
		  
              $sonuc = move_uploaded_file($_FILES["resim"]["tmp_name"], $yuklemeYeri);


              echo $sonuc ? "Dosya başarıyla yüklendi" : "Hata oluştu";

				$account_id = @$_SESSION['account_id'];
								
				$kaydet = mysqli_query($con, "UPDATE geciskartlari set resim = '$yuklenendosyaadi' where submission_id = '$kart_id'");
				
				//$kaydet = mysqli_query($con, "INSERT INTO evraklar (yuklemetarihi, resim, account_id, urun_id) VALUES ('$tarihsaat', '$yuklenendosyaadi', '$account_id', '$urun_id') ");				
				echo $kaydet ;

          }

      }

  }

} 


header('location: '.$_SERVER['HTTP_REFERER']);

?>

Cevap yaz
Cevaplar (1)
gokcin
23 gün önce

Merhaba!
Dosyayı yükledikten sonra resmi küçülten ve ardından kaydeden bir örnek ekledim.
Bu örneği, resmi JPEG formatında kaydederek sıkıştıran ve ardından veritabanına kaydeden bir işlem içerir.

<?php
include '../../include/db.php';

$zaman = time();

if ($_FILES["resim"]) {
    // ... Diğer işlemler ...

    $yol = "../../uploads/";

    $yuklemeYeri = $yol . $zaman . $_FILES["resim"]["name"];
    $yuklenendosyaadi = $zaman . $_FILES["resim"]["name"];

    if (file_exists($yuklemeYeri)) {
        echo "Dosya daha önceden yüklenmiş";
    } else {
        if ($_FILES["resim"]["size"] > 640000000) {
            echo "Dosya boyutu sınırı";
        } else {
            $dosyaUzantisi = pathinfo($_FILES["resim"]["name"], PATHINFO_EXTENSION);

            if (!in_array($dosyaUzantisi, array("jpg", "jpeg", "png", "pdf", "tif", "tiff"))) {
                echo "Sadece jpg, jpeg, png uzantılı dosyalar yüklenebilir.";
            } else {
                // Resmi küçültme işlemi
                $kucukResim = imagecreatefromstring(file_get_contents($_FILES["resim"]["tmp_name"]));
                $genislik = imagesx($kucukResim);
                $yukseklik = imagesy($kucukResim);
                $oran = 0.5; // Örnek olarak %50 küçültme
                $yeniGenislik = $genislik * $oran;
                $yeniYukseklik = $yukseklik * $oran;
                $kucukResimYeni = imagecreatetruecolor($yeniGenislik, $yeniYukseklik);
                imagecopyresampled($kucukResimYeni, $kucukResim, 0, 0, 0, 0, $yeniGenislik, $yeniYukseklik, $genislik, $yukseklik);
                
                // Resmi JPEG olarak kaydetme
                imagejpeg($kucukResimYeni, $yuklemeYeri);

                $sonuc = true; // Burada $sonuc'u kontrol etmek yerine doğrudan devam ediyoruz.

                // Diğer işlemler devam eder...

                // Veritabanına kaydetme işlemi
                $account_id = @$_SESSION['account_id'];
                $kaydet = mysqli_query($con, "UPDATE geciskartlari SET resim = '$yuklenendosyaadi' WHERE submission_id = '$kart_id'");
                echo $kaydet ? "Dosya başarıyla yüklendi" : "Hata oluştu";
            }
        }
    }
}

header('location: ' . $_SERVER['HTTP_REFERER']);
?>