Bazen resimler istediğimiz boyutta olmuyor. Yeniden boyutlandırmak gerekebilir. Bunun için en kolay sınıflardan biri olan SimpleImage sınıfı imdadınıza yetişiyor. Dosya yolunu girdiğiniz resimlerin genişliklerini ve yüksekliklerini düzenleyebilir, en boy oranlarını korur, yüzdeli ölçeklendirme yapabilir veya tüm bunları manuel olarak belirleyip php ile yeniden eklemeyi sağlayabilirsiniz.
SimpleImage Sınıf Kodları
<?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; } } ?>
Örnek Kullanım
Yukarıda belirtilen kodları bir dosyaya kopyalıyoruz ve ismini SimpleImage.php olarak kaydediyoruz. Sonrasında bunu include fonksiyonu ile ilgli yere çağırabilirsiniz.1-) Genişlik ve yükseklik ayarlama:
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('resim.jpg'); $image->resize(500,800); $image->save('resim2.jpg'); ?>
2-) Genişlik belirterek oranları koruyarak resmi ayarlama:
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('resim.jpg'); $image->resizeToWidth(300); $image->save('resim2.jpg'); ?>
3-) Belirli bir yüzde ile küçültme:
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('resim.jpg'); $image->scale(30); $image->save('resim2.jpg'); ?>
4-) Farklı yükseklikte ve farklı isimle yeniden ekleme:
<?php include('SimpleImage.php'); $image = new SimpleImage(); $image->load('resim.jpg'); $image->resizeToHeight(400); $image->save('resim2.jpg'); $image->resizeToHeight(250); $image->save('resim3.jpg'); ?>
İşinize yarayacağını düşünüyorum. Merak ettiğiniz ya da takıldığınız yerleri konu altına yorum atarak paylaşabilirsiniz. En yakın sürede yanıtlamaya çalışacağım.
5 yorum On PHP ile Resim Boyutlandırma
Önce siz sonra simpleimage imdadıma yetişti teşekkür ediyorum.
uzun zamandır aradığım birşeydi sizin sayenizde çözdüm herşey için teşekkürler.
selamlar, dostum hakkımda kısmındaki şu yazın “VİSUAL BASIC dili ile yola çıktığım yazılım dünyası serüvenim 2002-2004 yıllarında C, C++ dilleri ile devam etti.” C, ve C++ vayybe sen neymişsin 🙂
çok inandırıcı geldi 🙂 hele hele 2002 yıllarında acaba sen o yıllarda düz html ile yola çıkmış olmayasın ?
🙂 İnanması zor dostum, ben de senin gibi fake bir isimle geziyor olsaydım, öz güvenimin hangi noktada olacağını bilmeden inanamakta zorluk çekerdim. İlk yazdığım program alışveriş merkezi için Information Screen. Bir süre hobi olarak yaptığım bu iş, daha sonra hayatımın merkezi haline geldi. 20 sene önce ne hissediyorsam aynısını hissediyorum, aynı heyecanla yeni projelere başlıyorum. Gerçekten vaybeee, gerçekten inanması çok zor.
png resimlerinin arka şeffaflığı yeni resimde bozuluyor. buun bir çözümü var mı ?