[PHP] JPEGs „beschleunigen“

Hin und wieder haben Menschen krude Ideen, ob aus Unwissenheit oder anderen Beweggründen sei mal dahingestellt.

Die Idee:
Da ein JPEG ja ein gepacktes Bild ist müsste es doch viel schneller und viel schöner (so langsam, Zeile für Zeile) geladen werden, wenn man ein Bild pixelweise in eine Tabelle zerlegt.
Jede Zelle ist ein Pixel groß und hat die Farbe des entsprechenden Pixels.

Tolle Idee.
Da man solchen Ideen ja selten mit normalen Argumenten beikommt (sonst wären sie wohl gar nicht erst auf die Idee gekommen, hier ein kleines Script, welches ebend diese Idee umsetzt.
(Ja ich weiß, dass es sich um kein gültiges HTML handelt, aber wir wollen ja nicht das Beispiel durch zusätzlichen Kram überladen, es geht ja nur um das Bild):

  1. <table border="0" cellspacing="0" cellpadding="0">
  2. &gt; 16) &amp; 0xFF;
  3.         $g = ($rgb &gt;&gt; 8) &amp; 0xFF;
  4.         $b = $rgb &amp; 0xFF;
  5.        
  6.         $r = fillZero(dechex($r));
  7.  
  8.         $g = fillZero(dechex($g));
  9.        
  10.         $b = fillZero(dechex($b));
  11.         return $r.$g.$b;
  12.     }
  13.    
  14.     $fileName = "bild.jpg";
  15.     $size = getimagesize( $fileName );
  16.     $maxX = $size[0];
  17.     $maxY = $size[1];
  18.    
  19.     $image = ImageCreateFromJPEG( $fileName );
  20.    
  21.     for($y=0; $y &lt; $maxY; $y++) {
  22.     echo(&quot;<tr>");
  23.         for ($x=0; $x &lt; $maxX; $x++) {
  24.             $color = getHexCode($image,$x,$y);
  25.             echo(&quot;<td style='height:1px;width:1px' bgcolor="#$color">");
  26.             echo("");
  27.         }
  28.     echo("\r\n");
  29.     }
  30.  ?&gt;
  31. </table>

Wie zu erwarten dauert es lange (je nach Bildgröße, Server und Client) bis das Bild geladen ist.

Hier noch ein paar Fakten unter denen ich das Script getestet habe:
bild.jpg ist ein normales Foto, TrueColor, mittlere Komprimierung (keine Artefakte erkennbar):
Größe: 370.585 Bytes
Dimension: 1025×1255 -> 1.286.375 Pixel
-> 0,288 Byte pro Pixel

bild.jpg als BMP abgespeichert:
Größe: 3.859.125 Bytes
Dimension: 1025×1255 -> 1.286.375 Pixel
-> 3 Bytes pro Pixel (Was für eine Überraschung)

bild.php komplett generiert: 65.975.510 Bytes
Dimension: 1.286.375 Zellen
-> 51,288 Bytes pro Pixel/Zelle
Eine Zelle (die einen Pixel repräsentiert) sieht so aus:

  1. <td style='height:1px;width:1px' bgcolor="#0c1536"></td>

P.S.: Sollte ich mich irgendwo verrechnet haben, bitte kurze Meldung.
nobody is perfect

2 Antworten auf „[PHP] JPEGs „beschleunigen““

  1. das musst du mir bei zeiten mal erklären.
    aaaaaber.
    die bilder auf meiner homepage sollten eigtl. (falls nicht wirklich bes. groß) so im rahmen von 50-100 kb groß sein. mit DSL geht das rel. gut.
    aber wie werden bilder denn sonst geladen?
    und: ist es nun schneller so?
    und: lohnt sich das überhaupt?

Schreibe einen Kommentar