Php Aynı Anda Hem Büyük Hem Küçük Resim Ekleme

php-wallpaper3-6Php ile resim upload işlemlerinde bazılarımız sıkıntı yaşayabiliyoruz.Buna ufak bir işimi yaparken bende dahil olmuştum.Ve bunla ilgili bir sonuç ararken örnek bir yapı gördüm.Ve geliştirmeye çalıştım.Aslında benim geliştirdiğim fonksiyon tamamen deneme yanılma yöntemiyle bulunmuş bir yöntemdir.Pek sağlıklı ve performanslı gibi gözükmeye bilir ama şuan bir çok işimde kullanıyorum ve açıkçası biraz daha geliştirildikten sonra çok daha iyi olacağına inanıyorum.

Bu örneği bulduğumda işleyişi şu şekildeydi.Eklenen bir resmi ilk önce boyutlandırıyor sonra bu boyutlanan resmi belirlenen klasöre ekleyerek ilk seçilen resmi siliyordu.

Bende aynı işlevi farklı değişken adlarıyla yaptım.Aslında kullanılan yöntem çok basit bunun bir örneğini php.net’te görebilirsiniz.Öncelikle formdan gönderilen dosya adını ve kaynağını çekiyoruz.Ve bu veriyi şifreleyerek “basename” işleminden geçiriyoruz.

$kaynak		= $_FILES["resimler"]["tmp_name"];
//Formdan gonderilen veriyi cekiyoruz
$klasor		= "../image/";
//Yuklenecek dosya yolunu bir degiskene aktariyoruz
$dosya_adi	= $_FILES['resimler']['name'];
//Ayni sekilde dosya adinide cekiyoruz
$name		= md5(uniqid($dosya_adi));
$uzanti		= substr($dosya_adi,-4);
$yeniad		= $name.$uzanti;
/*Gelen dosya adini ilk önce md5 ile sifreleyip substr ile uzantisini aliyoruz*/
$yukle		= $klasor . basename($yeniad);
/*son olarak basename kullanarak dosya yolunun dosya isim bilesenini donduruyoruz */

Buradaki işimiz bittikten sonra yapacağımız işlem şu olacaktır öncelikle “if” ile bir kontrol yapısı oluşturup “move_uploaded_file” ile belirteceğimiz konuma gelen resmi ekliyoruz.

if (move_uploaded_file($kaynak, $yukle)) {
   $resim2 = imagecreatefromjpeg("../image/".$yeniad);
/*resim2 adlı degiskenimizde kullandıgımız imagecreatefromjpeg fonksiyonu gelen bir jpeg dosyasindan yeni bir resim olusturmamizi saglar*/
   $boyutlar2 = getimagesize("../image/".$yeniad);
/*degisken ve fonksiyon adından da anlayabilecegimiz gibi gelen resmin boyutlarını döndürüyoruz*/
   $resimorani2 = 900 / $boyutlar2[0];,
/*gelen resmi 900px genisligine ceviyoruz */
   $yeniyukseklik2 = $resimorani2 * $boyutlar2[1];
   $yeniresim2 = imagecreatetruecolor("900", $yeniyukseklik2);
/* burada imagecreatetruecolor fonksiyonu ile yeni gerçek renkli bir resim oluşturuyoruz */
   imagecopyresampled($yeniresim2, $resim2, 0, 0, 0, 0, "900", $yeniyukseklik2, $boyutlar2[0], $boyutlar2[1]);
/* imagecopyresampled fonksiyonu ile resmi boyutlandırıp yeni bir kopyasını oluşturuyoruz */
   $hedefdosya2 = "../image/" .$yeniad;

   imagejpeg($yeniresim2, $hedefdosya2, 100);
/* imagejpeg fonksiyonu ile yeniresim2 degişkenimizdeki gelen resimi hedefdosya2 adlı degiskenimizdeki dosya yoluna kaydını gerceklestiriyoruz*/
   chmod($hedefdosya2, 0755);
/* son olarak hedefdosyamızın chmod ayarını 0755 olarak ayarlayıp resmimizin buyuk halini ekliyoruz */

Son olarak aynı işlemi birde küçük resmi halinde ekleyecek halini yazıp “if” yapımızın içine ekleyerek “if” yapımızı sonlandırıyoruz.Yalnız belirtmek isterim.Kendimizi tekrarlamamamız lazım.Yani burada bir çok tekrar yaptım.Aynı fonksiyonu daha geliştirip az kod çok iş mantığı ile ilerletip tekrar sunumunu yapacağım.Umarım işinize yarar.Ayrıca fonksiyonlar hakkında daha ayrıntılı bilgiye aşağıdaki linklerden ulaşabilirsiniz.Bir daha ki paylaşımda görüşmek üzere kolay gelsin.

    $resim = imagecreatefromjpeg("../image/".$yeniad);
    $boyutlar = getimagesize("../image/".$yeniad);

    $resimorani = 55 / $boyutlar[0];
    $yeniyukseklik = $resimorani * $boyutlar[1];
    $yeniresim = imagecreatetruecolor("55", $yeniyukseklik);

    imagecopyresampled($yeniresim, $resim, 0, 0, 0, 0, "55", $yeniyukseklik, $boyutlar[0], $boyutlar[1]);

    $smallYeniAd = "small".$yeniad;

    $hedefdosya = "../image/thumb/".$smallYeniAd;

    imagejpeg($yeniresim, $hedefdosya, 100);

    chmod($hedefdosya, 0755);
}

Kaynak Link 1 : imagecreatefromjpeg

Kaynak Link 2 : imagecreatetruecolor

Kaynak Link 3 : imagecopyresampled

Yayınlayan

Bulut Üzer

Web ortamında gelişmesine yardımcı olan Yusuf Doru sayesinde şuan web developer olarak ilerlemekte.Web ve mobil ortamlarda uygulama geliştirmeye çalışmak da.Ayrı yeten de kişisel blogunda web ve php ile ilgili çalışmalarını ve deneyimlerini paylaşmayı hedeflemekte.

“Php Aynı Anda Hem Büyük Hem Küçük Resim Ekleme” üzerine 2 yorum

Bir Cevap Yazın

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