Skip to main content

PHP ile İmajları Yeniden Boyutlandırma

Web sayfanızda kullanıcı tarafından yüklenen imajları yeniden boyutlandırmak istediğinizde veya thumbnail oluşturmak için kullanabileceğiniz basit ve temel işlemleri içeren bir PHP fonksiyonu yazalım. İlk olarak imajı yüklemeyi sağlayan basit bir form gerekli:

<form enctype="multipart/form-data" method="post">
<input type="file" name="image">
<input type="submit" value="Yükle">
</form>


Bu form sayesinde kullanıcı istediği imajı seçerek yükleme işlemini başlatabilecektir. Form onaylandıktan sonra kullanacağımız PHP fonksiyonunu yazalım.

<?php

// İmajın yükleneceği klasör atanıyor.
$dir = 'images/';

// İmajın adını belirliyoruz. Şu anda imaj orjinal adı ile kaydediliyor. Farklı bir isim vermek de mümkün.
$image = $_FILES['image']['name'];

// İmajın adresini bir değişkene atıyoruz. İmaj bu adresten okunup kaydedilecek.
$filename = $_FILES['image']['tmp_name'];

// Yeni yükseklik ve genişlik değerleri atanıyor.
$h = 200;
$w = 200;

// İmajın jpg uzantılı olduğunu varsayıyoruz.
$simg = @imagecreatefromjpeg($filename);

// Yeniden boyutlandırmak için orjinal genişlik ve yükseklik değerleri alınıyor.
$currwidth = imagesx($simg);
$currheight = imagesy($simg);

// İmaj yatay mı yoksa dikey kadrajlı mı diye kontrol ediliyor.
if($currheight > $currwidth){
$zoom = $h / $currheight;
$newheight = $h;
$newwidth = $currwidth * $zoom;
}else{
$zoom = $w / $currwidth;
$newwidth = $w;
$newheight = $currheight * $zoom;
}
// İmaj boyutlandırılıyor.
$dimg = imagecreatetruecolor($newwidth, $newheight);

// İmaj kopyalanıyor
imagecopyresampled($dimg, $simg, 0, 0, 0, 0, $newwidth, $newheight, $currwidth, $currheight);

?>

Bu aşamada kullanılabilinecek iki kod bulunmaktadır: imagecopyresampled ve imagecopyresized.
imagecopyresampled daha smooth bir şekilde oluştururken, imagecopyresized daha sert çizgilerle imajı oluşturur. İlk komut daha yaygın olarak kullanılmaktadır.

Son olarak

<?php

// İmaj oluşturuluyor. 100 parametresi, jpg quality değerini belirler.
$ok = imagejpeg($dimg, "$dir".$name, 100);
// cache temizleniyor.
@imagedestroy($simg);
@imagedestroy($dimg);

?>

Bu kod temel olarak kullanıcıdan gelen imajları yeniden boyutlandırarak upload etmenizi sağlar. İhtiyaca göre daha da geliştirmeye açıktır. 

Comments

Popular posts from this blog

LaTeX'te Sunum Hazırlamak

Latex'i kullanarak projeksiyon cihazlarında sunulmaya yönelik çok güzel sunumlar hazırlamak mümkün olmaktadır. Oluşturulan dosya PDF olduğundan ve her işletim sisteminde (linux, mac os, unix, windows vs.) en azından bir tane PDF okuyucu program olduğundan, hazırlanan sunumların taşınabilirliği de azami seviyede olmaktadır. Tabi ki latex'in en üstün olduğu nokta olan mükemmel fontlar ve matematiksel denklem yazılımları latex'te hazırlanan sunumlar için de geçerli olmaktadır. Aşağıdaki linklerden indireceğiniz pakette örnek sunuma ait gerekli dosyaları bulabilirsiniz. Daha ayrıntılı bilgi almak isterseniz bana ulaşabilirsiniz.
Link : DROPBOX

Hazırladığım örnek sunumun slaytları şu şekilde:





















Yılbaşına Nerede Girilmez - İzmir Narlıdere Naci Usta Restoran

Geçen hafta yılbaşı dolayısıyla eşim "iki senedir evdeyiz hadi bu sene dışarıya çıkalım yılbaşında" dedi. Bu fikir her ne kadar bu tarz mekanda eğlenme olayları beni açmasa da, bana da mantıklı geldi, bir değişiklik olur dedim, iki arkadaşım ve eşleri ile birlikte toplam 6 kişi yılbaşı gecesini bir makanda geçirmeye karar verdik. Şimdi hal böyle olunca tabi insan herşey tam olsun istiyor, o yüzden biz de İzmir'deki olası mekanları değerlendirip bir fiyat filtresinden geçirdikten sonra gördük ki, "yıldız tilbe ile yeni yıl coşkusu" tadındaki eğlenceler, şayet yıldız tilbeyi izlemeye gidip yıldız tilbeyi görmek istiyorsanız kişi başı yaklaşı 400 TL ye mal oluyor. Tabi biz de oha dedik. Sonra ayrı bir olası mekan grubu daha keşfettik, bu gruptaki fiyatlar 90 (limitli içecek) ila 150 tl (limitsiz içecek) arasında değişiyordu. Konum ve müşteri profili düşünülünce bu mekanların bize daha çok hitabedebileceğini düşündük. Sonra limitli içecek olayında vazgeçip limitsi…