Przeglądarka: CCBot/2.0 (https://commoncrawl.org/faq/).
Strona dobrze działa w przeglądarkach:
IE 5.0, Mozilla 0.9.5, Netscape 6,
Opera 6, Konqueror 3.1 lub nowszych.
Strona może być błędnie wyświetlana!
 
# HTML #

phpTableGraph

Dawno temu napisałem w C++ program "TABLE GRAPH", który na podstawie bitmapowej grafiki tworzył kod tabeli w języku HTML, gotowy do wstawienia na stronę WWW.

Zastosowanie programu do tego celu stwarzało pewne ograniczenie, a mianowicie nie było możliwe dynamiczne generowanie takiej pseudo grafiki. Sprawę rozwiązuje mój prosty skrypt PHP, który na podstawie grafiki w formacie *.GIF, *.JPEG, *.PNG, *.WBMP, *.XPM, *.XBM generuje kod tabeli w języku HTML. Taka tabela ma następujące właściwości:

- ma wymiary takie same jak konwertowany obrazek,
- jej komórki mają 1 piksel szerokości i 1 piksel wysokości,
- nie posiada żadnego obramowania tak wewnętrznego jak i zewnętrznego,
- kolory tła odpowiednich komórek są identyczne z kolorami odpowiednich
  pikseli w obrazku.

Poniżej zamieszczam przykład tak wykonanej pseudo grafiki.


Zalety tak wykonanej grafiki:

- utrudnione kopiowanie takiej grafiki,
- taka grafika jest wyświetlana nawet gdy użytkownik zablokuje
  w przeglądarce WWW możliwość wyświetlania obrazków,


Wady takiej grafiki:

- znacznie większy rozmiar niż tradycyjnego obrazka, co powoduje
  dłuższe ładowanie strony WWW,
- prawidłowe wyświetlanie takiej grafiki zależne od interpretacji jej
  kodu HTML przez przeglądarkę,
- grafika musi składać się z tzw. kolorów bezpiecznych.


Grafikę tego typu prawidłowo wyświetlają przeglądarki:

- Internet Explorer 5.0 lub nowszy,
- Mozilla 0.9.5 lub nowsza,
- Opera 5 lub nowsza.


Jak widać tego typu rozwiązanie ma więcej wad niż zalet, ale jeśli mimo wszystko Cię interesuje, to poniżej wyjaśniam jak taką ciekawą tabelę stworzyć.

Abyśmy byli w stanie obrabiać grafikę za pomocą PHP, parser ten powinien być wyposażony w rozszerzenie GD, najlepiej w wersji 2.

<?php

##
## Diaboli phpTableGraph - www.diaboli.prv.pl
##

// Skanowanie obrazka
$image=imageCreateFromPng("test.png");

$szerokosc=ImageSX($image);
$wysokosc=ImageSY($image);

for($j=0;$j<$wysokosc;$j++)
{

   for($i=0;$i<$szerokosc;$i++)
   {

    $color[$i][$j]=ImageColorsForIndex($image,
                          ImageColorAt($image,$i,$j));

    $colorhex[$i][$j]='#'.base_convert($color[$i][$j]['red'], 10, 16)
                               .base_convert($color[$i][$j]['green'], 10, 16)
                               .base_convert($color[$i][$j]['blue'], 10, 16);

   }

}

ImageDestroy($image);

// Generowanie tabeli HTML
print '<TABLE border=0 cellspacing=0 cellpadding=0><TBODY>';

for($j=0;$j<$wysokosc;$j++)
{

   print '<TR>';

   for($i=0;$i<$szerokosc;$i++)
   {

     print '<TD width="1" height="1" bgcolor="'.$colorhex[$i][$j].'">
             </TD>';

   }

   print '</TR>';

}

print '</TBODY></TABLE>';

?>


Na powyższym listingu widać jak:

- Tworzony jest obiekt o nazwie "$image" na podstawie fizycznego obrazka "test.png". Wykorzystywana funkcja ImageCreateFromPng() tworzy taki obiekt na podstawie obrazka w formacie *.PNG. Inne funkcje tego typu dla obrazków w jakże ważnych formatach GIF, JPEG to: ImageCreateFromGif(), ImageCreateFromJPEG(). Pozostałymi formatami nie ma co sobie zawracać głowy.

- Badana jest szerokość i wysokość obrazka na podstawie obiektu "$image".

- Tworzona jest 2-wymiarowa tablica "$color" zawierająca kolor w formacie RGB każdego piksela z obrazka. Kolor każdego piksela z obrazka pobierany jest za pomocą funkcji ImageColorsFromIndex(), która jako argumenty przyjmuje identyfikator obiektu i indeks danego koloru pobieranego funkcją ImageColorAt().

- Tworzona jest 2-wymiarowa tablica "$colorhex" w której składowane są wartości kolorów poszczególnych pikseli w systemie szesnastkowym. Dzięki konwersji kolorów z RGB do szesnastkowego, wynikowy kod tabelki HTML jest mniejszy.

- Wskaźnik do obiektu "$image" jest uwalniany.

- Generowana jest tabela w języku HTML, której komórki mają tło zabarwione na odpowiedni kolor pobrany z tablicy "$colorhex".

I w ten oto sposób generowane są dynamicznie z poziomu PHP grafiki
w formacie... HTML :-)


Generated in: 0.095 s
Copyright © 2002-2023 Sigillum Diaboli