28 Eylül 2016 Çarşamba

Javascript'de Image Nesnesi

Merhaba Webkolog Takipçileri!

Bugün web sayfalarımızın olmazsa olmazı görsellerle JavaScript aracılığıyla nasıl etkileşim kuracağımızı, yani Image Nesnesini konuşacağız. Bir web sitesinde görselleri dinamik olarak yüklemek, önbelleğe almak, boyutlarını öğrenmek veya kullanıcı etkileşimlerine göre değiştirmek istediğinizde, JavaScript'in Image nesnesi devreye girer. Bu nesne, HTML'deki <img> etiketinin JavaScript'teki karşılığıdır ve görselleri tarayıcının hafızasında temsil eder. Hazırsanız, web sayfalarınıza dinamik görsellik katmanın sırlarını öğrenelim!


Image Nesnesi Nedir ve Neden Kullanırız?

JavaScript'teki Image nesnesi, bir HTML <img> öğesini temsil eden bir DOM (Belge Nesne Modeli) arayüzüdür. Temelde, JavaScript kullanarak yeni bir görsel oluşturmanıza veya mevcut bir görselin özelliklerine erişmenize olanak tanır. Görseli bir HTML belgesine eklemeden önce bile, JavaScript ile yükleme işlemini başlatabilir, boyutlarını sorgulayabilir veya yükleme durumunu takip edebilirsiniz.

Image nesnesini kullanmanın temel nedenleri:

  • Görsel Ön Yükleme (Preloading): Bir kullanıcının bir sayfaya veya bölüme gelmeden önce görselleri arka planda yükleyerek daha hızlı bir kullanıcı deneyimi sunmak.
  • Dinamik Görsel Değiştirme: Kullanıcı etkileşimlerine (fareyle üzerine gelme, tıklama vb.) veya belirli koşullara göre görselleri değiştirmek.
  • Görsel Boyut Bilgisi: Yüklenen görsellerin doğal genişlik ve yükseklik gibi boyut bilgilerine erişmek ve bunlara göre düzenlemeler yapmak.
  • Oyun Geliştirme veya Canvas Uygulamaları: Canvas üzerinde çizim yapmak için görselleri dinamik olarak yüklemek.

Image Nesnesi Oluşturma

Image nesnesi oluşturmak oldukça basittir. new Image() yapıcı fonksiyonunu kullanarak yeni bir görsel nesnesi örneği oluşturabilirsiniz:


    // Yeni bir Image nesnesi oluşturma
    const resim = new Image();
    console.log(resim); // Çıktı: <img> (Boş bir img elementi nesnesi)

Bu, aslında hafızada bir <img> HTML elementi oluşturur. Ancak bu element henüz DOM'a eklenmediği için sayfada görünmez.


Image Nesnesinin Temel Özellikleri

Image nesnesinin, bir HTML <img> etiketinin sahip olduğu birçok özelliği bulunur. En sık kullanılanlardan bazıları:

  • src: Görselin kaynağını (URL'sini) belirler veya döndürür. Görseli yüklemek için bu özelliği ayarlamanız gerekir.
    
                resim.src = "https://example.com/resimler/webkolog-logo.png";
                console.log(resim.src); // "https://example.com/resimler/webkolog-logo.png"
            
  • alt: Görselin alternatif metnini (erişilebilirlik için) belirler veya döndürür. Görsel yüklenemediğinde veya ekran okuyucular tarafından kullanılır.
    
                resim.alt = "Webkolog Logosu";
            
  • width: Görselin CSS piksel cinsinden genişliğini ayarlar veya döndürür. (HTML width niteliği)
  • height: Görselin CSS piksel cinsinden yüksekliğini ayarlar veya döndürür. (HTML height niteliği)
    
                resim.width = 300; // 300 piksel genişlik
                resim.height = 200; // 200 piksel yükseklik
            
  • naturalWidth: Görselin gerçek (doğal) piksel genişliğini döndürür. Görsel yüklenene kadar 0'dır.
    
                // Görsel yüklendikten sonra erişilebilir
                resim.onload = () => {
                    console.log("Doğal Genişlik:", resim.naturalWidth);
                    console.log("Doğal Yükseklik:", resim.naturalHeight);
                };
            
  • naturalHeight: Görselin gerçek (doğal) piksel yüksekliğini döndürür. Görsel yüklenene kadar 0'dır.
  • complete: Görselin tamamen yüklenip yüklenmediğini gösteren bir boolean değer döndürür (true/false).

Image Nesnesinin Olayları (Events)

Görselin yüklenme durumu gibi önemli anları yakalamak için olay dinleyicileri kullanırız:

  • onload: Görsel başarıyla yüklendiğinde tetiklenir. Bu, genellikle naturalWidth ve naturalHeight gibi özelliklerin güvenli bir şekilde erişilebilir olduğu andır.
    
                const imgEl = new Image();
                imgEl.src = "https://picsum.photos/id/237/200/300"; // Örnek bir görsel URL'si
    
                imgEl.onload = () => {
                    console.log("Görsel başarıyla yüklendi!");
                    console.log(`Boyutlar: ${imgEl.naturalWidth}x${imgEl.naturalHeight}`);
                    document.body.appendChild(imgEl); // Görseli DOM'a ekle
                };
            
  • onerror: Görsel yüklenirken bir hata oluştuğunda tetiklenir (örneğin, görsel bulunamazsa veya bozuksa).
    
                const imgElHata = new Image();
                imgElHata.src = "https://example.com/bu-resim-yok.png"; // Hatalı bir URL
    
                imgElHata.onerror = () => {
                    console.error("Görsel yüklenirken bir hata oluştu!");
                    // Varsayılan bir resim gösterebilirsiniz
                    imgElHata.src = "https://via.placeholder.com/150?text=Resim+Yüklenemedi";
                };
                document.body.appendChild(imgElHata);
            

Pratik Kullanım Alanları

1. Görsel Ön Yükleme (Preloading)

Bir sonraki sayfa veya bölüm için görselleri önceden yüklemek, kullanıcı deneyimini iyileştirir.


    const gorseller = [
        "https://picsum.photos/id/238/200/300",
        "https://picsum.photos/id/239/200/300",
        "https://picsum.photos/id/240/200/300"
    ];

    function gorselOnYukle(urls) {
        urls.forEach(url => {
            const img = new Image();
            img.src = url;
            img.onload = () => console.log(`${url} yüklendi.`);
            img.onerror = () => console.error(`${url} yüklenemedi!`);
        });
        console.log("Görsel ön yükleme başlatıldı...");
    }

    gorselOnYukle(gorseller);
2. Dinamik Görsel Değiştirme (Örnek: Hover Efekti)

JavaScript ile DOM'daki mevcut bir <img> etiketinin src özelliğini değiştirebilirsiniz.


    // HTML'de şöyle bir resim olduğunu varsayalım: <img id="anaResim" src="resim1.jpg" alt="Ana Resim">

    const anaResim = document.getElementById("anaResim");
    const kucukResimler = [
        { thumb: "resim1_thumb.jpg", full: "resim1_buyuk.jpg" },
        { thumb: "resim2_thumb.jpg", full: "resim2_buyuk.jpg" }
    ];

    kucukResimler.forEach(res => {
        const thumbImg = document.createElement("img");
        thumbImg.src = res.thumb;
        thumbImg.style.cursor = "pointer";
        thumbImg.style.marginRight = "10px";

        thumbImg.addEventListener("click", () => {
            anaResim.src = res.full; // Tıklanınca büyük resmi göster
        });

        document.body.appendChild(thumbImg); // Küçük resimleri sayfaya ekle
    });
3. Görsel Boyutlarını Kontrol Etme

Yüklenen görsellerin gerçek boyutlarını alarak, örneğin bir galeride düzenleme yapabilirsiniz.


    const yuklenecekResim = new Image();
    yuklenecekResim.src = "https://picsum.photos/id/241/600/400";

    yuklenecekResim.onload = () => {
        console.log(`Yüklenen resmin doğal boyutları: ${yuklenecekResim.naturalWidth}x${yuklenecekResim.naturalHeight}`);

        if (yuklenecekResim.naturalWidth > 500) {
            console.log("Resim çok geniş, yeniden boyutlandırılıyor...");
            yuklenecekResim.width = 500; // Genişliği 500 piksele ayarla
        }
        document.body.appendChild(yuklenecekResim);
    };

Sonuç

JavaScript'in Image nesnesi, web uygulamalarınızda görsellerle dinamik ve etkileşimli bir şekilde çalışmanız için harika bir araçtır. Görsel ön yükleme, dinamik içerik değiştirme, oyun geliştirme veya resim düzenleme gibi birçok senaryoda bu nesnenin gücünden faydalanabilirsiniz. src özelliği, onload ve onerror olayları, görsellerin yönetiminde size tam kontrol sağlar. Görsel manipülasyonu yeteneklerinizi geliştirerek, daha zengin ve dinamik web deneyimleri sunmaya hazır olun!

Webkolog'u takipte kalın!

Hepinize bol kodlu ve başarılı projeler dilerim!

0 yorum:

Yorum Gönder