PHP İle Resmi Yeniden Boyunlandırma
Bölüm 1 – Bu Sınıf Ne İşe Yarıyor
Bölüm 2 – Sınıf Kodları
Bu sınıfın kodları aşağıdaki gibidir:
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
Yorum Gönder