HTML görüntüler için ALT metni

11 Cevap php

Biz görüntülerin ton olan bir web sitesi üzerinde çalışıyoruz ve gereksinimi her biri görüntü (JPG, JPEG, PNG, GIF vb) için ALT metni sahip olmaktır. Yani HTML gösterileri ve görüntü bu görüntü için ALT metin de IMG SRC ile birlikte HTML yazılır zaman.

Geliştiriciler ile tartışmanın ardından geldi çözümlerdir

1) tüm bu görüntü adlarını tutmak için yeni bir tablo oluşturun. Sonra görüntü db arama kullanılan her zaman yapılır ve uygun ALT metni eklenir.

2) Başka bir çözüm, her dosya içine bazı EXIF ​​bilgi yazmak için ve gerektiği gibi onlar dosyasının EXIF ​​bilgisi kullanılır her zaman HTML okumak ve eklenir.

Devam etmek konusunda herhangi bir öneriniz. Sunucu ve yükleme zamanında az yük ile en iyi çözüm arıyoruz böylece görüntülerin bir yeri vardır.

Ek bilgi - Biz görüntüleri vb seçmek için bizim sunucu üzerinde PHP çalıştırmak

Teşekkürler

11 Cevap

Bu PNG ve GIF desteklemiyor gibi I'ld EXIF ​​ekarte.

Db arama (benim için) tamam sesler ve (sürece akıllıca yaptığımız gibi) tamam ölçekli olacaktır. Örneğin aramalarını mümkün olduğunca azaltmaya çalışmalısınız.

Hatta zaten bu verilerin bazı olabilir, ve zaten görüntüler hakkında veri olması yararlı olacaktır

Ben küçük bir iş olduğunu ben bu görüntülerin kayıtları korumak zorunda eminim, çünkü veritabanında saklayarak bir tabloya bir sütun ekleyerek öneriyoruz. Eğer durumda alt metin üzerinde arama yapabilirsiniz onun veritabanı içinde eğer Ayrıca, böyle bir özelliğe sahip olmak istiyorum.

Eğer görüntüleri bir alt metin vermek için wan't, it should be something that works correctly if the image is not there.

Ben "Görüntünün alt metin", ya da "resim.jpg" olmamalıdır. "Stackoverflow.com soruları ve cevapları bir yeri vardır." Gibi daha ziyade bir şey olmalı Bir SO ekran gösteren zaman. Görüntü can't, anlamlı bir alt metin var ama eğer, o zaman sadece bazen kötü bir alt metni vererek daha alt metin vermek için sadece iyi, = "" alt yapmak ve hareket.

Bu nedenle, size should means bir şey değil, anlamsız alt metin (EXIF bilgileri iktidar) koymak, her görüntü için alt metni saklamak.

Eğer dosya adıyla eşleşen alt etiketleri ile yaşayabilir, tüm görüntüleri almak ve dosya adına göre bir alt etiketi eklemek için bazı javascript kullanabilirsiniz.

Böyle bir şey:

    //get all the img tags
    var images = document.getElementsByTagName('img');    
    for (i=0;i<images.length;i++)
    {
      //get the filename from the src
      filename = images[i].src.substring(images[i].src.lastIndexOf('/')+1,images[i].src.lastIndexOf('.'));
      //do any formatting here
      filename = filename.replace('_',' ');
      //set alt/title tags
      images[i].setAttribute('alt', filename);
      images[i].setAttribute('title', filename);
    }

Eğer alt metni güncellemek istedim size, örneğin görüntüleri işlemek istiyorsa, ayrıca, görüntü dosyasına her zaman yazmak gerekir çünkü ben 2 seçeneğini önleyeceğini. küçük oluşturmak, meta-veri kaybolmuş olabilir.

Seçenek 1 en mantıklı görünüyor, ve bir DB dosya için sorgulama iseniz, o zaman sadece aynı zamanda alt metni olsun.

Belki Üçüncü seçenek:

  • dosya içinde mağaza ALT metni :)

Her iki çözüm bana iyi gibi görünse de gerekli yük hakkında soru biraz zor: Bir veritabanından görüntüleri alırsanız zaten ben veritabanında alt tag değerleri saklamak gibi olur. Dosyaları bir dizinden sunulmaktadır Eğer hiç bir veritabanı kullanıyorsanız eğer bağlıdır. Nereye gidiyorsun bir veritabanını kullanmak istemiyorsanız EXIF ​​rota makul bir alternatif gibi geliyor, ama EXIF ​​verileri almak için her dosyayı açmak için gereken ek bir veritabanı kullanarak daha fazla yük oluşturabilir.

Zaten bir veritabanını kullanmak Kısacası, veritabanı yol gitmek.

Nasılsa bir görüntü başka bir görüntü (EXIF veri aktarımı önemsiz değil), artı ile açık olması için varsa EXIF ​​seçenek bir sorun olacak, çünkü ben her istek üzerine görüntü dosyaları bir sürü ayrıştırma çok kaynak tüketen olacağını, veritabanı seçeneği öneririm .

Ama veritabanı veya EXIF ​​seçeneği ile olacak, ben kesinlikle her sayfada yükü 30 sql sorguları istemiyorum çünkü, image_name => alt_text bir ilişkisel dizi ile, bir önbellek gibi davranan bir php dosyası oluşturmak öneririm. Php dosyası bir yükleyici olarak dahil olacak, bu nedenle her komut, örneğin bir global değişken aracılığıyla, ilişkisel dizi acces olurdu.

Ve bu dosyayı oluşturan bir komut dosyası olurdu, yani bir alt metin değiştiğinde, kolayca ilişkisel dizi içeren önbellek dosya yeniden.

Dürüst soru: Eğer gerçekten hatta yeni bir tablo oluşturmak gerekiyor? Eğer zaten bir PHP yükleme mekanizmasını kullanarak ediyorsanız, sadece veritabanı için yeni bir alan eklemek ve alt metin eklemek, gerektiği gibi daha sonra bir değişken olarak bağlamak değil mi? PHP oradan çok basit olacaktır. Sadece bir düşünce!

Zaten (ben bunu tahmin) bir veritabanı varsa, o zaman sadece görüntüleri mevcut tabloya bir sütun eklemek, yepyeni bir tablo eklemek gerekmez. Sonra sadece sayfanızı doldurmak aynı sorgu ile tüm bilgi alabilirsiniz. Ben bu en iyi seçenek olduğuna inanıyorum.

Eğer "görüntüleri bir çok" derken, biz yaklaşık kaç bahsediyoruz? Yüzlerce veya binlerce?

Eğer yüzlerce iseniz, ben sadece ımagepath / altText çiftinin bir dizi ile bir PHP dosyası yaratacak. Eğer görüntüyü başvuran Daha sonra her yerde bu PHP dosyasını içerir. Soyut uygulanması için, tam resim yolu verilen altText dönmek için PHP dosyası bir yöntem var.


$texthash = array(
  "/some/path/imageName.png" => "some alt text"
, "/some/path/imageName2.png" => "some other alt text"
);

function get_alt_text($imgpath) {
  return $texthash($imgpath);
}

Bu strateji, hızlı ve sürece görüntülerin sayısı hala nispeten küçük olduğu için sayfalarınızı yavaşlatmak değildir. Sadece zor kısmı yeni görüntüler eklenir gibi görüntü yolu olanlar diziyi tutmak emin yapıyor.

Görüntü sayısı bu yöntem performansı yavaşlıyor yeterince büyük alır sonra, veritabanına bilgi taşımak ve veritabanını sorgulamak için PHP dosyası yöntemini değiştirin. Eğer uygulama soyutlanmış beri, sen başvuran PHP dosyaları herhangi bir değişiklik gerekmez.

Ayrıca emin HTML kullanmadan önce alt metni HTML-kaçan olun.