Geçenlerde bir arkadaşımın ihtiyacı olan bu fonksiyonu oturup yazdım. Biraz kademeli gitti ama sonunda hoş bir şey ortaya çıktı. Gerçi ben kullanır mıyım bilemiyorum ama bir başkasının işine yarayacağından eminim. Fonksiyonumuzdan kısaca bahsetmek gerekirse;

herhangi bir wysiwyg editöre eklenen resimler haliyle bizim göstereceğimiz alanların dışına çıkabilir. Bu durumda sitelerimizin görüntüsü açısından hiç iyi sonuç vermez. İşte fonksiyon da burda devreye giriyor ve veritabanına eklemeden önce fonksiyondan geçirdiğiniz takdir de resmi yeniden boyutlandırıyor…

Fonksiyonumuzu yazmaya başlayalım:

dosya adı: fonksiyon.php

< ?php
 
/**
 * @author  Yusuf KOÇ ( Raiden ) < yusufkoc at ayva dot net >
 * @copyright 2008
 * Fonksiyonun amacı herhangi bir wysiwyg ile textarea içine yüklenen resmi istenilen ölçü de yeniden boyut verir.
 * Kullanımı: yeniden_boyutlandir($veri,400,300)     
 */
 
function yeniden_boyutlandir(&$veri,$w,$h)
{
	# Makalemizde birden çok img tagı olabilir o yüzden bunları bulup arananları aranan a depolayacağız
	# değişmesi gereken yeni değerleri ise degis adli dizi de depolayacağız
	$aranan = array();
	$degis	= array();
 
	# Döngü içinde kullanacağımız ve artıracağımız değişkenimizi tanımlıyoruz
	$i = 0;
 
	# Magic quotes durum kontrolü
	if (get_magic_quotes_gpc())
	{
		$veri = stripslashes($veri);
	}
 
	# Resim width ve height leri buluyoruz
	preg_match_all("#<img .+width=\"(.*?)\".+height=\"(.*?)\".+/>#",$veri,$durum);
 
	# Regex desenimiz sonucunda bize dönen dizinin elemanlarını saydık
	$count = count($durum[1]);
 
	# Döngüye girerek yüksek değerleri bulup yenisiyle değiştirmek için dizilerde depolayacağız
	while ($i < $count)
	{
		if ($durum[1][$i] > $w)
		{
			if ($durum[2][$i] > $h)
			{
				$aranan[] = "/".$durum[1][$i]."/";
				$degis[]  = $w;
				$aranan[] = "/".$durum[2][$i]."/";
				$degis[]  = $h;
			}
		}
		$i++;
	}		
 
	# Dizilerde depoladığımız verileri replace ( değiştirerek ) fonksiyondan değer döndüreceğiz
	return preg_replace($aranan,$degis,$veri);
}
 
?>

Fonksiyonumuz bu kadar. Gelelim şimdi bu fonksiyonumuzu nasıl kullanabiliriz ? Bunu da hemen aşağıda gösteriyorum.

dosya adı: index.php

< ?php
 
/**
 * @author 
 * @copyright 2008
 */
 
# Fonksiyonumuzun tanımlı olduğu php dosyamızı şuanki index.php dosyamıza dahil ediyoruz
include ('fonksiyon.php');
 
# Kaynak Belirtiyoruz. Herhangi bir wysiwyg editör ile eklediğiniz kendisi resmin boyutunu girecektir.
# Ben şuan kullanmadığım için manual olarak girdim. 
$kaynak = '<img src="http://img371.imageshack.us/img371/2613/13052008080cn8.jpg" width="2048" height="1536" />';
 
# $kaynak adlı değişkenimizi fonksiyonumuzdan geçiriyoruz
$sonuc = yeniden_boyutlandir($kaynak,400,300);
 
# Sonucu ekrana basıyoruz
echo $sonuc;
 
 
?>

Evet herşey bu kadar basit. Güle güle kullanın. Anlattığım makaledeki örneği buradan indirebilirsiniz.