HomeBackend GeliştirmePHP

PHP ile Resmi Yeniden Boyutlandırma

PHP ile Resmi Yeniden Boyutlandırma

Merhaba,

Bu makaledeki kodlar benim kendi eserim değildir. Bir blogda gördüm ve sizlerle paylaşmaya karar verdim.

Bölüm 1 – Bu Sınıf Ne İşe Yarıyor

SimpleImage isimli bu sınıf yolunu belirttiğiniz resimlerin genişliklerini ve yüksekliklerini düzenlemenizi sağlıyor. Bu sınıf sayesinde resimlerinizi %’li değer girerek ölçekleyebilir, genişlik ve yüksekliğini manuel belirleyebilir veya sadece genişlik/yükseklik değerlerinden birini girerek oranları bozmadan yeniden boyutlandırabilirsiniz.

Boyutlandırma işlemlerini en basit yapabileceğini sınıflardan birisi bence bu.

Bölüm 2 – Sınıf Kodları

Bu sınıfın kodları aşağıdaki gibidir:

Bölüm 3 – Sınıfın Kullanımı

Yukarıdaki sınıfı SimpleImage.php adlı bir dosyaya kaydedin.

Örnek 1 – GenişlikxYükseklik ayarlama ve farklı isimle kaydetme

Şimdi picture.jpg adlı resim dosyamızı 250×400 ebatlarında tekrar boyutlandıralım ve picture2.jpg ismiyle kaydedelim:

Örnek 2 – Oranları koruyarak sadece genişliği değiştirip farklı bir isimle kaydetme

Şimdi picture.jpg dosyamızı 250 piksel genişliğinde oranları koruyarak resmi yeniden boyutlandıralım ve picture2.jpg olarak kaydedelim:

Örnek 3 – Resmi belirli bir yüzde oranında küçültme

Şimdi picture.jpg dosyamızı %50 oranında küçültelim ve picture2.jpg ismiyle kaydedelim:

Örnek 4 – Resmi farklı yüksekliklerde farklı isimlerle kaydetme

Şimdi picture.jpg dosyasının yüksekliğini 500px olarak ayarlayalım ve picture2.jpg olarak kaydedelim aynı anda yüksekliği 200px olarak da picture3.jpg olarak kaydedelim.

Örnek 5 – Resmi kaydetmeden ekrana küçük resmini çıkartma

Şimdi picture.jpg dosyamızı yeni bir dosya olarak kaydetmeden nasıl küçük resim olarak gösterebileceğimize bakalım:

Örnek 6 – Form uygulaması

Şimdi formdan yüklediğimiz resmi 150 piksel genişliğinde yeniden boyutlandırıp ekrana basalım:

Sonuç

Bu sınıfla ilgili sorularınızı forumda başlık açarak veya burada yorum yaparak sorabilirsiniz. Resimleri yeniden boyutlandırmak için harika bir sınıf.

Kolay gelsin,

Yorumlar

TOPLAM 10
  • comment-avatar

    Merhabalar
    Denedim ama işlem yapmadı.
    Tarif ettiğiniz gibi SimpleImage sayfasını hazırladım. Ekle butonumuzun çalıştığı kısma şu şekilde yazdım:
    ———————-
    $image = new SimpleImage();
    $image->load($_FILES[‘Resim’][‘tmp_name’]);
    $image->save($_FILES[‘Resim’][‘tmp_name’]);
    $image->output();
    ——————–
    Ama olmadı.Çıktı olarak ekrana ����JFIF��>CREATOR: gd-jpeg v1.0 (using IJG JPEG v62), default quality ��C diye devam eden yazılar geldi.

    Bu anlatımda seçilen ve boyutu değiştirilen resmin nereye kaydedildiğini anlayamadım.
    Eğer elinizde çalışır hali ise, seçilen resmin, belirlenen klasör içerisine kopyalandığı örneği paylaşabilir misiniz? Örneğin: Kullanıcının seçtiği resmi, Resimler/Haberler klasörü altına yeni boyutuyla aktarılması.

  • comment-avatar

    Siz kodunuzda

    komutunu kullanmışsınız. Bu resmi direk ekrana basar. Bunun için header’la

    vs. gibi bilgileri vermelisiniz. Yani bu şekilde çalıştırdığınız PHP dosyası tarayıcıda bir resim gibi davranacaktır.

    burası ile formdan resmi yüklüyoruz. Daha sonra işlemleri yaptıktan sonra resmi kaydetmek için

    satırını yazıyoruz. Burada resmi kaydetmek istediğimiz dizini bu şekilde ayarlıyoruz.

  • comment-avatar

    resim kalitesini aşırı derecede bozuyor nedeni ne olabilir

  • comment-avatar

    iyi bir paylaşım mail adresime reklam geldi ordan tıkladım iyi ki gelip okumuşum bu konuyu emeğine sağlık.

  • comment-avatar
    Mehmet 12 yıl önce

    Sevgili Oral ÜNAL

    sınıfın çalışır halde olan php dosyalarını zipleyip koysaydın yazının altına ne güzel olurdu. Hadi madem olmamış bari bana e-posta ile göndersende güzel olur.

    paylaşımın için teşekkür ederim.

  • comment-avatar
    Abdullah 12 yıl önce

    Sevgili Oral ÜNAL

    Sizi Tebrik Ediyorum Gerçekçen Sadece ve Anlaşılır bir anlatım kulanıyorsunuz.

  • comment-avatar

    hocam öncelikle konu için teşekkürler gayet başarılı ve yararlı bir paylaşım olmuş.

    şöyle bir sorum olacaktı size resim boyutlarını ayarlarken dik olan resimler bozuluyor resimleri *gösterdiğim bir div çerçevem var boyutları 477×300 şeklinde. dik resimlerin genişliği bozulmasın vede çerceveden dışarı taşmasın diye $image->resizeToHeight(300); kodu ile yüksekliğini ayarladım resmide ortaladım. çerceve içerisinde sorunsuz düzgün olarak görüntüleyebildim. Fakat genişliği büyük resimlerde taşmalar oldu haliyle. bende if komutu ile getimagesize denedim beceremedim. en son aşağıdaki gibi denedim bu şekildede sadece resmin boyutunu 300 yapıyo.

    Genişliği 477 den büyük olanları bu şekilde $image->resize(477,300); ufak olanlarıda $image->resizeToHeight(300); bu şekilde nasıl kaydettirebilirim? cevabınızı bekliyorum iyi çalışmalar.

  • comment-avatar
    Erkin Tanyeli 12 yıl önce

    Paylaşım çok iyi teşekkürler gayet detaylı bir şekilde anlatmışsınız. Bende kendi sitemde kullanmak için bikaç şey ekledim sizinlede paylaşmak istedim :
    load($_FILES[‘resim’][‘tmp_name’]);
    $yol = $_FILES[‘resim’][‘name’];
    $parca = “.”;
    $resim_uzanti = explode($parca,$yol);
    $dosya_yeni_ad = substr(uniqid(md5(rand())), 0,20); // random md5 atıyor resme.
    $dosya_ad = $dosya_yeni_ad.”.”.$resim_uzanti[1];
    $image->resizeToWidth(150);
    $image->save(‘images/kucuk_resim/’.$dosya_ad);
    $image->resizeToWidth(350);
    $image->save(‘images/buyuk_resim/’.$dosya_ad);
    } else {
    ?>

    veritabanına kaydederken $dosya_ad ı kullanabilirsiniz.

  • comment-avatar
    Mehmet ÇELİK 9 yıl önce

    Yüksek boyutlu fotoğraflarda (8MB gibi) yüklemelerde çok vakit kaybettiriyor, bazen zaman aşımı oluşuyor. Hızlı olması açısından komut sıralaması değiştirmenin bir faydası olur mu? Load edilen fotoğrafı, bu komutu gerçekleştirmeden kırpmanın ve sonra load etmenin ve save etmenin mantığı saçma mıdır?

  • comment-avatar
    Bahadır 8 yıl önce

    güzel bir çalışma olmuş teşekkürler fakat benim bir sıkıntım var.

    düşük kb da resim yüklendiğim zaman güzel şekilde işlem gerçekleşiyor fakat 2 3 mb yada daha kaliteli resimlerde sıkıntı yaşıyorum. Bunu nasıl çözebilirim

DISQUS: 0