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:





















Bir Kitap Eleştirisi: "Gölgelerin Kaderi"

Ben ne anlarım kitap eleştirmekten aslında ama sonuçta kitabın yazarı insanın samimi bir arkadaşı olunca dedim ki madem adam kitap yazmaya cüret etmiş ben de eleştirmeye cüret edebilirim :)
Bilim-kurgu türünde eserlere oldum olası çok düşkün olduğunu bildiğim çok değerli arkadaşım Erdem Akagündüz ( hadi bundan sonra kendisine  Yazar diyelim) çok sevdiği türde bir hikaye kaleme almış. Temeli oynanmış bir FRP oyununa dayanan bu hikaye bilim kurgu türünü seven kişilerin, hele ki Star Wars evrenine aşina kişilerin ister istemez ilgisini çekebilecek ana hikayeye paralel güzel bir hikaye. Ancak yazının geri kalanında hikayeye ilişkin sürprizbozanlar olabileceği konsunda kendi okuyucumu da uyarmak isterim.
Bildiğim kadarıyla bir iki temel bilgi vermek isterim öncelikle FRP hakkında:
90'lı yıllardan sonra doğan gençlere  FRP  (fantasy role playing) ya da RPG (role playing game) nedir diye sorarsanız haklı olarak birçoğu bunu MMOG  (Massively multiplayer online game)   ile özdeşleştirerek…

Mint Linux Masaüstü Font Rengini Değiştirmek

Vallaha Mint Linux'tan halen memnunum. Yapmak isteyip de yapamadığım bir şey çıkmadı henüz. Olursa o konuda da bilgi vermek isterim.
XFCE masaüstü arayüzünü kullanan mint linux günümüz Ubuntu sürümleri ile gelen arayüzler düşünüldüğünde çok sade kalıyor. Ancak bu sadeliği benim gibi birçok görece "yaşlı" insanın da tercih edebileceğini düşünüyorum. Kafa rahat böyle ohhh!
Neyse... Gene de tabi insan biraz masaüstüne ayar vermek istiyor. Ben masaüstümde o günlerde ilgi duyduğum filmlerdeki kahramanların resimlerini koymayı severim. Bu aralar da favorim "the Hobbit" filmi olduğu için, internette sıklıkla kullanılan bir duvar kağıdını kullanmak istedim. Ancak duvar kağıdı koyu renkliydi ve masaüstü simgelerine ait yazılar siyah olduğundan duvar kağıdı üzerinde görünmüyordu. Bunu değiştirmek  "ayarlar->kişiselleştir->..." gibi tarif edilebilecek bir şey olmadığından buraya not düşmeyi uygun gördüm. Zaten öncelikle kendime bir şeyler hatırlatmasını iste…