Skip to content

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:

<?php

/*
* File: SimpleImage.php
* Author: Simon Jarvis
*/

class SimpleImage {

   var $image;
   var $image_type;

   function load($filename) {

      $image_info = getimagesize($filename);
      $this->image_type = $image_info[2];
      if( $this->image_type == IMAGETYPE_JPEG ) {

         $this->image = imagecreatefromjpeg($filename);
      } elseif( $this->image_type == IMAGETYPE_GIF ) {

         $this->image = imagecreatefromgif($filename);
      } elseif( $this->image_type == IMAGETYPE_PNG ) {

         $this->image = imagecreatefrompng($filename);
      }
   }
   function save($filename, $image_type=IMAGETYPE_JPEG, $compression=75, $permissions=null) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image,$filename,$compression);
      } elseif( $image_type == IMAGETYPE_GIF ) {

         imagegif($this->image,$filename);
      } elseif( $image_type == IMAGETYPE_PNG ) {

         imagepng($this->image,$filename);
      }
      if( $permissions != null) {

         chmod($filename,$permissions);
      }
   }
   function output($image_type=IMAGETYPE_JPEG) {

      if( $image_type == IMAGETYPE_JPEG ) {
         imagejpeg($this->image);
      } elseif( $image_type == IMAGETYPE_GIF ) {

         imagegif($this->image);
      } elseif( $image_type == IMAGETYPE_PNG ) {

         imagepng($this->image);
      }
   }
   function getWidth() {

      return imagesx($this->image);
   }
   function getHeight() {

      return imagesy($this->image);
   }
   function resizeToHeight($height) {

      $ratio = $height / $this->getHeight();
      $width = $this->getWidth() * $ratio;
      $this->resize($width,$height);
   }

   function resizeToWidth($width) {
      $ratio = $width / $this->getWidth();
      $height = $this->getheight() * $ratio;
      $this->resize($width,$height);
   }

   function scale($scale) {
      $width = $this->getWidth() * $scale/100;
      $height = $this->getheight() * $scale/100;
      $this->resize($width,$height);
   }

   function resize($width,$height) {
      $new_image = imagecreatetruecolor($width, $height);
      imagecopyresampled($new_image, $this->image, 0, 0, 0, 0, $width, $height, $this->getWidth(), $this->getHeight());
      $this->image = $new_image;
   }

}
?>

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:

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resize(250,400);
   $image->save('picture2.jpg');
?>

Ö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:

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(250);
   $image->save('picture2.jpg');
?>

Ö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:

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->scale(50);
   $image->save('picture2.jpg');
?>

Ö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.

<?php
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToHeight(500);
   $image->save('picture2.jpg');
   $image->resizeToHeight(200);
   $image->save('picture3.jpg');
?>

Ö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:

<?php
   header('Content-Type: image/jpeg');
   include('SimpleImage.php');
   $image = new SimpleImage();
   $image->load('picture.jpg');
   $image->resizeToWidth(150);
   $image->output();
?>

Örnek 6 – Form uygulaması

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

<?php
   if( isset($_POST['yukle']) ) {
      header('Content-Type: image/jpeg');
      include('SimpleImage.php');
      $image = new SimpleImage();
      $image->load($_FILES['resim']['tmp_name']);
      $image->resizeToWidth(150);
      $image->output();
   } else {
?>
   <form action="resim_yukle.php" method="post" enctype="multipart/form-data">

      <input type="file" name="resim" />

      <input type="submit" name="yukle" value="Yükle" />

   </form>
<?php
   }
?>

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,

TR Kodlama GitHub'da!

TR Kodlama'da yer alan makaleleri GitHub üzerinden düzenleyebileceğinizi biliyor muyudunuz? Harika değil mi? Bu makale ile ilgili düzenleme yapmak isterseniz aşağıdaki butona tıklayınız!

GitHub'da Görüntüle ve Düzenle!