‘hazır kod’ etiketli yazlar

Java’da resim formatı değiştirmek, resim boyutlarını öğrenmek gibi temel işlemler kolayca yapılabilir. Yine de bu işlemleri bir genel amaçlı bir “resim işleme sınıfı” toplamak isteyebilirsiniz. Bu sayfada bulacağınız ImageUtil sınıfı böyle bir sınıf için iyi bir başlangıç olabilir. Şu anda sadece resim genişliği, yüksekliği, dosya boyutunu bulabiliyor, jpg, gif, png, bmp formatları arasında çevrim yapabiliyor. İlerleyen zamanlarda resim boyutu değiştirme, üstüne yazı yazma ve resme watermark ekleme gibi işlemleri de ekleyeceğim. ImageUtil‘i direkt olarak kullanmasanız bile kodlarını inceleyerek bu işlemlerin nasıl yapıldığını rahatlıkla öğrenebilirsiniz. Sonuçta bütün bu işlemler için Java ile gelen javax.imageio.ImageIO sınıfını kullanılmakta.

ImageUtil metotları resim dosyasını ‘dosya adı’ olarak değil de File sınıfı olarak almakta. Elinizde sadece dosya adı varsa File nesnesini aşağıdaki gibi oluşturabilirsiniz.

File dosya=new File("c:/dizinadi/resim.jpg");

Metotları burada tek tek açıklamayacağım, bütün açıklamalar JavaDoc formatında kodun içerisinde bulunmakta. Aşağıdaki örneğe bakarak da sınıfın nasıl kullanıldığını görebilirsiniz.

Örnekler:

Not: Bu örnek ImageUtil sınıfının main metodu içerisinde aynen bulunmakta.

	try{
		//test
		String filePath="d:/_dev/temp/"; //!!!bunu ve dosya adini degistirmeyi unutmayin!!!
		File f = new File(filePath+"test.png");
		System.out.println("test.png: "+ImageUtil.findWidth(f)+"x"+ImageUtil.findHeight(f));
 
		f=ImageUtil.convertTo(f, new File(filePath+"/test.gif"), ImageUtil.GIF);
		System.out.println("test.gif: "+ImageUtil.findWidth(f)+"x"+ImageUtil.findHeight(f));
 
		f=ImageUtil.convertTo(f, new File(filePath+"/test.bmp"), ImageUtil.BMP);
		System.out.println("test.bmp: "+ImageUtil.findWidth(f)+"x"+ImageUtil.findHeight(f));
 
		f=ImageUtil.convertToJpg(f, new File(filePath+"/test.jpg"), 0.9f);
		System.out.println("test.jpg: "+ImageUtil.findWidth(f)+"x"+ImageUtil.findHeight(f));
 
	}
	catch(Exception e){
		e.printStackTrace();
	}

(daha fazla…)

Kategoriler: Programlama
Tags: ,
devam et >

Email adresi kontrolü için pek çok fonksiyon yazılmıştır. Bunları internette kolayca bulabilirsiniz. Fakat bu fonksiyonlar ne kadar doğru çalışıyor? ‘Comparing E-mail Address Validating Regular Expressions’ isimli yazıda vakti bol saygıdeğer bir arkadaşımız ‘Regular Expression’ ile yapılan 13 adet e-posta doğrulamasını sistemli bir şekilde test etmiş, hangisinin nerede doğru, nerede yanlış çalıştığını güzel bir şekilde listelemiş. Bu testlere göre mükemmel doğrulukta çalışan bir metot bulamamış ama Kohana project‘ten Geert De Deckere tarafından geliştirilen aşağıda göreceğiniz ‘regular expression’ı en başarılı olarak seçmiş. Bu regex’te eksik olan 2 nokta bulmuş. Bu iki noktasizin için problem çıkarmayacaktır. Detayları yukarıda verdiğim adreste bulabilirsiniz. Aşağıda bu regex’in fonksiyon haline getirilmiş halini bulabilirsiniz.

/**
* Eposta adresinin gecerli olup olmadigini kontrol eder.
* @param $eposta
* @return bool eposta gecerli ise 'true', degilse 'false' dondurur.
*/
function epostaDogrumu($eposta){
	return (bool) preg_match('/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD', $eposta);
}

For english: Date & Time Difference in PHP

İki tarih arasındaki farkı hesaplamak için PHP’de date_diff diye bir fonksiyon bulunmakta ama ne yazık ki bu fonksiyon PHP’nin sadece 5.3 ve sonraki versiyonlarında çalışıyor. Dolayısıyla pek çok kişi için tarih-saat farkı hesaplayan bir fonksiyona ihtiyaç var. Bu sayfada bu işi yapan bir fonksiyon bulacaksınız. Aradığınız sadece Türkçe tarih & saat göstermek ise şu yazıya bakınız: PHP ile Türkçe Tarih Gösterimi-Çevrimi

Kullanım

Fonksiyon 3 adet değişken alıyor. Bunlardan sadece birincisi zorunlu.
dateDiff($d1[, $d2=null [, $format="*"]);

İlk iki parametre olarak farkı alınacak tarih ve/veya saatleri giriyorsunuz. Tarih formatı olarak Unix zaman damgası veya ‘strtotime‘ fonksiyonunun kabul ettiği herhangi bir değer kullanılabilir. Dolayısıyla tarih girmek için ‘time()‘ fonksiyonun ya da acayip bir format kullanmıyorsanız MySQL verilerini doğrudan kullanabilirsiniz. ‘strtotime‘ fonksiyonunu kabul ettiği değerler ile ilgili php.net strtotime sayfasına bakabilirsiniz. Girilen zamanların hangisinin büyük olduğu önemli değil. Yani tarihFarki(’12-03-2009′, ‘01-01-2010′) ve tarihFarki(’01-01-2010′, ‘12-03-2009′) size aynı sonuçları getirecektir. Son parametre olan $format sonucun hangi şekilde döndürüleceğini belirler. $format olarak “saniye”, “dakika”, “saat”, “gun”, “hafta”, “ay”, “yil” veya “*” değerlerinden birisini girebilirsiniz. “*” dışındaki seçeneklerde fonksiyon size belirtilen formatta bir sayı döndürecekir. Yani tarihFarki(’2010-01-02′, ‘2010-01-01′, ‘gun’) yazarsanız alacağınız sonuç ‘1′, tarihFarki(’2010-01-02′, ‘2010-01-01′, ‘dakika’) yazarsanız ‘86400′ (bir gündeki dakika sayısı) olur. Eğer $format olarak “*” girerseniz ya da bu alanı hiç kullanmazsanız fonksiyon yukarıda geçen tüm değerleri içeren bir dizi döndürür.

Örnekler

echo "Şu an:".date("r",time())."<br>";
echo "1: ".tarihFarki("20090401040302", time(), "ay")." ay<br>";
echo "2: ".tarihFarki(time(), "2009-07-23 04:00:00", "saat")." saat<br>";
echo "3: ".tarihFarki("-3 day", "2009-07-23 04:00:00", "gun")." gun<br>";
echo "4: ".tarihFarki("2008-06-23", "2009-07-23", "yil")." yıl<br>";
$t=tarihFarki("2008-06-23", "2009-07-23");
echo "5: ";
print_r($t);
echo "<br>";

Kod

/**
 * Iki tarih arasindaki farki bulur.<br>
 * <strong>kullanim:</strong> dateDiff($d1[, $d2=null [, $format="*"]);<br>
 * <strong>ornek:</strong><br>
 * echo "şu an:".date("r",time())."<br>";
 * echo "1: ".tarihFarki("20090401040302", time(), "ay")." ay<br>";
 * echo "2: ".tarihFarki(time(), "2009-07-23 04:00:00", "saat")." saat<br>";
 * echo "3: ".tarihFarki("-3 day", "2009-07-23 04:00:00", "gun")." gun<br>";
 * echo "4: ".tarihFarki("2008-06-23", "2009-07-23", "yil")." yıl<br>";
 * $t=tarihFarki("2008-06-23", "2009-07-23");
 * echo "5: "; print_r($t);
 *
 * @param mixed $d1     ilk tarih. unix zaman damgasi ya da strtome 
 *                      fonsksiyonunun kabul ettigi herhangi bir deger olabilir. 
 *                      ornek: '2009-05-23', '2009-05-23 12:10:04', '-2 day',
 *                      '23-05-2009 12:23', '20090523121004'
 * @param mixed $d2     ikinci tarih. ilkiyle ayni ozellikleri tasir. eger 
 *                      girilmez ya da bos bir deger olarak girilirse o anki 
 *                      tarih olarak alinir. bu iki tarih arasinda 
 *                      hangisinin buyuk hangisinin kucuk oldugu onemli degildir.
 *                      ikisi de ayni sonuc verir.
 * @param str $format   "saniye", "dakika", "saat", "gun", "hafta", "ay", 
 *                      "gun", "*".
 *                      eger girilmez ya da "*" olarak girilirse yukaridaki 
 *                      butun degerleri iceren bir dizi dondurur. belirtilen 
 *                      diger degerlerden birisi girilirse bu tipte bir sayi 
 *                      dondurur.
 * @return mixed        sayi ya da dizi tipinde tarihler arasindaki farki 
 *                      dondurur. dizinin icinde bulunan  degiskenler 
 *                      sunlardir: "saniye", "dakika", "saat", "gun", "hafta", 
 *                      "ay", "gun" olacaktir.
 */
function tarihFarki($d1, $d2=null, $format="*"){
    if($d2==null){
        $d2=$d1;
        $d1=time();
    }
 
    if(!is_int($d1)) $d1=strtotime($d1);
    if(!is_int($d2)) $d2=strtotime($d2);
    $d=abs($d1-$d2);
 
    $format=strtolower($format);
    if(empty($format)) $format="*";
 
    $result = array();
 
    if($format=="*" || $format=="gun")    $result["gun"]   = floor($d/(60*60*24));
    if($format=="*" || $format=="ay")     $result["ay"] = floor($d/(60*60*24*30));
    if($format=="*" || $format=="yil")    $result["yil"]  = floor($d/(60*60*24*365));
    if($format=="*" || $format=="hafta")  $result["hafta"]  = floor($d/(60*60*24*7));
    if($format=="*" || $format=="saat")   $result["saat"]  = floor($d/(60*60));
    if($format=="*" || $format=="dakika") $result["dakika"]= floor($d/60);
 
    if($format!="*") return $result[$format];
    else return $result;
}

Asağıdaki fonksiyon ile bir dizindeki dosyaları silebilirsiniz. Fonksiyon ihtiyacınıza göre farklı şekillerde çalışabilir. Bir dizini alt dizinleriyle birlikte silebilirsiniz, dosya silerken ‘regular expression’ kullanıp dosya adına göre silme işlemi yapabilirsiniz, dizinin sadece içeriğini silebilirsiniz. Aşağıda gerekli bilgileri ve kullanım örneklerini PHPDoc şeklinde türkçe olarak yazdım.

(Click for english: Remove a Directory and Its Content with PHP)

/**
 * bir dizin/klasör icindeki dosyalari siler.
 * kullanim sekli:
 * dizinSil(string $dizin [, bool $dizininKendisiniSil=true 
 *                      [, bool $altDizinleriSil=true 
 *                      [, string $regEx='/.* /']]]); 
 * 
 * kullanim ornekleri:
 * dizinSil('/home/gudubeth/resimler');
 *      //dizin icindeki dosyalari, alt dizinleri ve dizinin kendisi siler
 * dizinSil('/home/gudubeth/resimler', false);
 *      //sadece dizinin icerigini siler. alt dizinler silinir
 * dizinSil('/home/gudubeth/resimler', false, false);
 *      //sadece dizinin icerigini siler. alt dizinler silinMEZ
 * dizinSil('/home/gudubeth/resimler', false, true, '/.*\.jpg/');
 *      //dizin ve altdizinlerdeki jpg uzantili dosyalari siler.
 *
 * @param str $dizin
 *                      dizinin yeri. ornek: /home/guest/temp
 *                      veya c:/appserv/www/tmp
 * @param bool $dizininKendisiniSil
 *                      eger 'true' ise dizinin kendisini siler.
 *                      degil ise sadece dizin icerigi silinir.
 *                      varsayilan deger: 'true'
 * @param bool $altDizinleriSil
 *                      'true' ise yinelemeli (rekursif) calisip
 *                      alt dizinleri de siler.
 *                      varsayilan deger: 'true'
 * @param str $regEx
 *                      sadece $regEx ile secilen dosyalari siler.
 *                      regEx fonksiyonu olarak preg_match kullanilir.
 *                      varsayilan deger: '/.* /' (yani tum dosyalari sil).
 *                      ornek degerler:
 *                          mp3 uzantili dosyalari sil: '/.*\.mp3/'
 *                          adi a ile baslayan dosyalari sil: '/a.* /'
 *                          adinda 'tmp' gecen dosylari sil: '/.*tmp.* /'
 *
 * @return  bool        eger denenen her dosya silindiyse veya silinecek bir
 *                      dosya bulunamadiysa 'true' degerini dondurur.
 *                      Dosya silme islemlerinden herhnagi birisi hatali ise
 *                      'false' dondurur.
 * */
function dizinSil($dizin, $dizininKendisiniSil=true, $altDizinleriSil=true, $regEx="/.*/") {
    if(!$dh = @opendir($dizin)) return false;
    $sonuc=true;
    while (($dosya=readdir($dh))!==false) {
        if($dosya!='.' && $dosya!='..'){
            if(is_dir( $dizin.'/'.$dosya) && $altDizinleriSil)
                $sonuc = dizinSil($dizin.'/'.$dosya, true, true, $regEx) && $sonuc;
            else if(preg_match($regEx, $dosya))
                $sonuc = @unlink($dizin.'/'.$dosya) && $sonuc;
        }
    }
    closedir($dh);
    if($dizininKendisiniSil) $sonuc = @rmdir($dizin) && $sonuc;
    return $sonuc;
}

Kolaylıkların dili PHP ile tarih formatlamak gerçekten kolay bir iş ama sadece ingilizce siteler için. İngilizce bir sitede tarih göstermek için tek ihtiyacınız ‘date‘ fonksiyonu. İlk parametre olarak gireceğiniz belirli karakterlerle tarihi istediğiniz gibi gösterebilirsiniz. Mesela ‘January 12, 2009‘ yazdırmak için ‘echo date(”F j, Y”)‘ yazmanız yeterli olacaktır.

Türkçe Tarih & Saat Fonksiyonu

Tarih ve saat gösterimini en basit şekilde halledebilmeniz için aşağıdaki göreceğiniz fonksiyonu kullanabilirsiniz. Fonksiyonun çalışma prensibi çok basit: date fonksiyonunu çağırıp aldığı çıktıdaki ingilizce kelimeleri türkçeye çeviriyor. Fonksiyonun dışında kalan diziler de bu çevrimler için zaten. Doğrudan date fonksiyonu kullanıldığı için aldığı parametreler temelde date ile aynı. Sadece işleri biraz daha kolaylaştırmak için bu parametrelerin yeteneklerini arttırdım. Şöyle ki: tarih formatının belirlendiği ilk parametrede ay, gün, yıl gibi türkçe kelimeler; gösterilecek tarihin belirlendiği ikinci parametrede ise tek bir tane yerine çok daha çeşitli formatlarda tarihler kullabiliyorsunuz. Basitçe örneklersek, date(”d F Y”) fonksiyonunu tarih(”d F Y”) şeklinde yazabileceğiniz gibi tarih(”gun ay yil”) şeklinde de yazabilirsiniz (çıktısı ‘17 Mayıs 2009′ gibi birşey olacaktır).

Tanımlama:

tarih($format, [$zaman]);
$zaman ile belirtilen zamanı ilk parametrede belirtilen formatta biçimlendirir. $zaman parametresi girilmemişse çalışma zamanındaki zaman kullanılır.

Parametreler:

$format

Biçilendirilecek tarihin formatı. String içerisine yazılan format bilgilerinden oluşur (”d-F-Y” gibi). date fonksiyonunda kullanılan seçeneklerin hepsi bu değişken için de geçerlidir. php.net:date fonksiyonu adresinde detaylı seçenekleri görebilirsiniz. Bu sayfada belirtilen seçeneklerin yanı sıra aşağıda belirtilen türkçe değerler de kullanılabilir.

Biçim Açıklama Örnek sonuç
gun Ay günlerinin sıfır dolgulu iki haneli gösterimi 01′den 31′e
kisagun Ay günlerinin sıfır dolgusuz gösterimi 1′den 31′e
hgun Hafta günlerinin tam metinsel gösterimi Pazar’dan Cumartesi’ye
hgunkisa Ay günlerinin iki harfli metinsel gösterimi Pzt’den Paz’a
ay Ayın tam metinsel gösterimi, Ocak ya da Mart gibi Ocak’tan Aralık’a
kisaay Ayın üç karakterli, metinsel kısa gösterimi Oca’dan Ara’ya kadar
aysayi Ayın sıfır dolgulu sayısal gösterimi 01′den 12′ye
kisaaysayi Ayın sıfır dolgusuz sayısal gösterimi 1′den 12′ye kadar
yil Yılın 4 haneli sayısal, tam gösterimi 1999 ya da 2003 gibi
kisayil Yılın iki haneli gösterimi 99 ya da 03 gibi
saat Saatin, 24-saatlik sıfır dolgulu gösterimi 00′dan 23′e
kisasaat Saatin, 12-saatlik sıfır dolgulu gösterimi 01′den 12′ye
dakika Sıfır dolgulu dakika gösterimi 00 ile 59 arasında
saniye Sıfır dolgulu saniye gösterimi 00 ile 59 arasında
Örnek format Örnek sonuç
“ay, yil” Ocak, 2010
“kisagun ay, hgun” 7 Ocak, Pazartesi
“gun-aysayi-kisayil saat:dakika:saniye” 07-01-10 12:10:54

$zaman:

Biçimlendirilecek zamanı belirtir. Eğer girilmemişse o anki zaman kullanılır. $zaman değeri strtotime fonksiyonun kabul ettiği tüm değerler olabilir. MySQL veritabanından aldığınız değerleri doğrudan kullanabilirsiniz. Aşağıda bu parametrenin alabileceği bazı değerler örneklenmiştir:
“31-12-2009 13:23:10″
“2009-12-31 13:23:10″
“31-12-2009″
“3 gun once”
“-3 gun”
“+5 gun”
“2 yil sonra”

Kullanım Örnekleri

echo tarih("gun/ay/yil saat:dakika:saniye")."; ";
// çıktısı: 30/Aralık/2009 01:06:58;
echo tarih("gun-ay-yil, hgun saat:dakika", "3 gun once")."; ";
// çıktısı: 27-Aralık-2009, Pazar 01:06;
echo tarih("kisagun-kisaaysayi-kisayil, hgun saat:dakika", "+2 ay")."; ";
// çıktısı: 2-3-10, Salı 01:08;
echo tarih("yil.ay.gun saat:dakika:saniye", "2009-12-20 12:10:23")."; ";
// çıktısı: 2009.Aralık.20 12:10:23;
echo tarih("gun ay yil saat:dakika", "20081118100630");
// çıktısı: 18 Kasım 2008 10:06

Kod

$aylarIng=array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
$aylarKisaIng=array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
$gunlerIng=array("Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday");
$gunlerKisaIng=array("Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun");
$aylar=array("Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık");
$aylarKisa=array("Oca", "Şub", "Mar", "Nis", "May", "Haz", "Tem", "Ağu", "Eyl", "Eki", "Kas", "Ara");
$gunler=array("Pazartesi", "Salı", "Çarşamba", "Perşembe", "Cuma", "Cumartesi", "Pazar");
$gunlerKisa=array("Pt", "Sa", "Ça", "Pe", "Cu", "Ct", "Pa");
 
/**
 * tarihi turkceye cevirir. tarih temelde date fonksiyonu ile olusturulur.
 * $zaman ise strtotime ile timestamp'e cevrilir. $format'in kullanımi
 * date fonksiyonunda oldugu gibidir. ayni sekilde  $zaman'in alacagi degerler
 * strtotime fonksiyonuna uygun secilebilir.
 *
 * @global array    $aylarIng, $aylar, $gunlerIng, $gunler, $aylarKisaIng,
 *                      $aylarKisa, $gunlerKisaIng, $gunlerKisa
 * @param str       $format
 * @param str/int   $zaman
 * @return str
 */
function tarih($format, $zaman=null){
    if(!$zaman) $zaman=time();
    else{
        $zaman=str_ireplace(array("once","ay", "gun", "yil","dakika","saniye","hafta"),
                           array("ago","month","day","year","minute","second","week"), $zaman);
        $zaman=strtotime($zaman);
    }
    $format=str_ireplace(
        array("kisaaysayi","kisaay","aysayi","kisagun","hgunkisa","hgun","gun","kisayil","yil","kisasaat","saat","dakika","saniye", "ay"),
        array("n",         "M",     "m",     "j",      "D",       "l",   "d",  "y",      "Y",  "h",       "H",   "i",     "s",      "F"),
        $format);
    $tarihStr=date($format, $zaman);
    if(strpos($format, "F")!==false){
        global $aylarIng, $aylar;
        $tarihStr=str_replace($aylarIng, $aylar, $tarihStr);
    }
    if(strpos($format, "l")!==false){
        global $gunlerIng, $gunler;
        $tarihStr=str_replace($gunlerIng, $gunler, $tarihStr);
    }
    if(strpos($format, "M")!==false){
        global $aylarKisaIng, $aylarKisa;
        $tarihStr=str_replace($aylarKisaIng, $aylarKisa, $tarihStr);
    }
    if(strpos($format, "D")!==false){
        global $gunlerKisaIng, $gunlerKisa;
        $tarihStr=str_replace($gunlerKisaIng, $gunlerKisa, $tarihStr);
    }
    return $tarihStr;
}

Kaynaklar:
‘date’ fonksiyonu

SetLocale ile Türkçe Tarih&Saat

Aslında strftime fonksiyonunu kullanarak da türkçe tarih gösterebiliyorsunuz. Fakat bunun için sunucunun bölgesel ayarlarının türkçe olacak şekilde değiştirilmiş olması gerekiyor. Bu ayar yapılamamış olsa bile eğer sunucunuz buna izin veriyorsa PHP kodunuzun başına bir yerlere
setlocale(LC_TIME, ‘tr_TR’);
satırını ekleyerek bölgesel ayarları türkçeye uygun hale getirebilirsiniz. Test için şu php kodunu suncunuzda çalıştırınız:

setlocale(LC_TIME, 'tr_TR');
echo strftime('%A, %d. %B %Y');

Eğer ‘Salı, 05. Ocak 2010′ gibi bir sonuç alıyorsanız bu yöntemi kullanabilirsiniz.

Kaynaklar:
’strftime’ fonksiyonu
’setlocale’ fonksiyonu

Etkileşimli ve çok dilli bir siteyle uğraştıysanız kullanıcı girişlerindeki aksanlı karakterleri, aksansız hale getirme ihtiyacı duymuş olabilirsiniz. Aksanlı karakterlerden kasıt ingiliz alfabesinde olmayan ğ, ş, ä gibi karakterler, aksansızlardan kasıt da bunların g, s, a gibi ingiliz alfabesinde bulunan aksansız biçimleri… Dün Wordpress’in kodlarına bakarken tam da bu işi yapan ‘remove_accents’  isimli bir fonksiyon buldum. UTF8 harici değişimler yapılan kısmını aşağıda bulabilirsiniz. Orjinal hali için: Wordpress’te wp-inlcludes/formatting.php içindeki remove_accents isimli fonksiyona bakabilirsiniz. Kod elinizde yoksa da formatting.php dosyasını online olarak görmek için buraya tıklayın.

Örnek kullanım:

echo remove_accents("ğüşıöç ĞÜŞİÖÇ äëïã ÄËÏÃ");
//çıktısı 'gusioc GUSIOC aeia AEIA' şeklinde olacaktır.

(daha fazla…)

Aşağıda sayfanızdaki flash dosyasının boyutlarını değiştiren javascript dosyası bulunmakta.  IE5.5, IE6, IE7, IE8, Firefox 3, Opera 10, Safari 4, Chrome 3 programlarında test edildi.

Kullanım

Düzgün çalışması için flash’ı sayfanıza yerleştirirken kullanıdığınız html <object> etiketine id vermeniz gerekiyor. Daha sonra fonksiyonları çağırırken kullanacağımız ‘id’ bu olacak. Örnek:

<object  id=”flashid” height=”500″ width=”650″
classid=”CLSID:D27CDB6E-AE6D-11cf-96B8-444553540000″
codebase=”http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0″>

</object>

  • Boyut değiştirme:
    flashResizer.resize(genislik, yukseklik,’flashid‘);
  • Büyütme:
    flashResizer.zoomin(’flashid‘);
  • Küçültme:
    flashResizer.zoomout(’flashid‘;

Kod

var flashResizer = {
    ZOOM_IN:1,ZOOM_OUT:-1,
    fo:null,ZOOM_FACTOR:0.1,
    findObj:function(_foid){if(_foid==undefined || _foid==null){return this.fo;} this.fo=null;if (window.document[_foid]) this.fo=window.document[_foid];else if (navigator.appName.indexOf("Microsoft Internet")==-1){if (document.embeds && document.embeds[_foid]) this.fo = document.embeds[_foid];}else this.fo = document.getElementById(_foid);return this.fo;},
    resize:function(_w,_h,_foid){if(this.findObj(_foid)){this.fo.width=_w;this.fo.height=_h;}return this;},
    zoom:function(_d,_f){if(this.findObj(_f)){var zf=1+_d*this.ZOOM_FACTOR;this.resize(this.fo.width*zf,this.fo.height*zf);}return this;},
    zoomin:function(_f){this.zoom(this.ZOOM_IN,_f);},
    zoomout:function(_f){this.zoom(this.ZOOM_OUT, _f);}
}

(daha fazla…)