PHP İle Resmi Yeniden Boyunlandırma

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.

Bu makale başka bir blogtan alıntıdır.
 

  

Yorumlar

Bu blogdaki popüler yayınlar

Corel Draw Arrange/Organizasyon Menüsü Kullanım Alanları

Corel Draw Effects Menüsü Kullanım Alanları

Corel Draw 10 Üzerinden Kullanım Anahatları - Önemli Bilgiler