Automatische Bildskalierung mit PHP

Automatische Bildskalierung mit PHP
Von Lars Ebert am 05.03.11, 18:59
Kategorien: Arbeit, Design, PHP, Programmieren and Tipps

In vielen meiner Webanwendungen spielen Bilder verschiedenster Größe eine große Rolle. Auf Advitum und Weevo sind es meine Referenzen, auf abi12 vom Nutzer hoch geladene Bilder. Um die Bilder zu präsentieren, sollte man eine flexible Kontrolle über die Bildgröße haben.

Zeigt man per HTML Bilder an, kann man zwar die Größe als Attribute übergeben, allerdings sind nicht alle Browser gleich gut darin, die Bilder auf die gewünschte Größe zu reduzieren, was oft zu unschönen Ergebnissen führt. Außerdem werden die Bilder erst beim Clienten skaliert, also in voller Größe übermittelt. Besser wäre es, die Bilder schon auf dem Server zu skalieren, damit der Traffic reduziert und die Qualität der Skalierung nicht dem Zufall überlassen wird.

Ein Praxisbeispiel

Schauen wir uns einmal die Referenzen auf Weevo.de an. Ich möchte die Bilder gerne unbearbeitet auf den Server laden und das Aufbereiten der Bilder für die Galerie soll automatisch passieren.

Die Referenzen werden automatisch skaliert.
Die Referenzen auf Weevo.de werden automatisch auf dem Server skaliert.

Wie man sehen kann, werden die Bilder in zwei verschiedenen Größen dargestellt, zusätzlich können die Bilder per Klick vergrößert werden. Es müssen also drei verschiedene Bildgrößen automatisch generiert werden.

Für die dynamische, automatische Skalierung von beliebigen Bildern kann ich den »Smart Lencioni Image Resizer«, kurz SLIR empfehlen. Man muss im Vorfeld keinerlei Vorbereitungen treffen, die Parameter für die Skalierung werden einfach in das SRC-Attribut geschrieben, so können die Bilder in jeder beliebigen Größe verwendet werden. Außerdem verfügt das Script über eine hervorragende Cache-Funktion, sodass die Bilder nur einmal skaliert werden müssen.

Wie wird SLIR verwendet?

Aber jetzt zeige ich erstmal, wie der Image-Tag aussehen muss.


<img src="/slir/w150-h150-c1.1/images/bild.jpg" alt="Ein Bild" />

Das SLIR-Script liegt in dem Ordner /slir/ und die Bilder im Ordner /images/. Die Parameter bedeuten, dass die Breite (w150) und die Höhe (h150) maximal 150 Pixel betragen sollen und das Bild auf ein Seitenverhältnis von 1:1 zugeschnitten werden soll (c1.1). Sollen die Bildgröße oder das Seitenverhältnis geändert werden, so muss nur der Pfad geändert werden. Die originale Bilddatei bleibt, wie sie ist.

Wie man sieht, ist es also sehr einfach, die Bilder zu skalieren. Allerdings hat diese Lösung auch einen Nachteil. Der Server muss über PHP 5 oder höher verfügen, ansonsten läuft das Script nicht.

Was mache ich, wenn auf meinem Server nur PHP 4 läuft?

Leider weiß ich aus Erfahrung, dass es sehr viele Server gibt, auf denen PHP 5, aus welchen Gründen auch immer, nicht installiert ist. Auf diesen Servern sollte man den Vorgänger von SLIR, den »Smart Image Resizer« ausprobieren. Die einzige PHP-Funktion, die das Script benötigt, ist imageconvolution(), diese kann man aber manuell nachliefern.

Der Nachteil hierbei ist allerdings, dass das Script so ziemlich viel Memory auf dem Server benötigt und ziemlich langsam ist. Je größer die Bilder, desto mehr Speicher wird benötigt.

Fazit

Ich hoffe, ihr findet Verwendung für dieses extrem nützliche Script. Es ist wirklich genial, wie einfach damit Bilder automatisch auf dem Server skaliert werden können. So kann man einige Zeit sparen, die man sonst mit dem Skalieren von Bildern verbracht hätte.

Was sagt ihr?

Ist das genau das, was ihr gerade sucht? Werdet ihr das Script selbst verwenden oder verwendet ihr es vielleicht sogar schon? Erzählt mir davon in den Kommentaren!