In diesem Artikel finden Sie Informationen zur Bildoptimierung auf dem Webserver sowie praktische PHP-Beispiele zur automatisierten Verarbeitung und Optimierung von Bildern. Die Optimierung von Bildern reduziert die Dateigröße erheblich und verbessert die Ladezeiten Ihrer Webseite. Auf den loswebos-Webservern stehen hierfür verschiedene Werkzeuge wie jpegtran, optipng, gifsicle, jpegoptim, ImageMagick, GraphicsMagick, advancecomp, pngquant und pngcrush zur Verfügung.
Verfügbare Programme zur Bildoptimierung
Folgende Programme sind serverseitig verfügbar:
|
Programm |
Verwendungszweck |
|---|---|
|
jpegtran |
Verlustfreie JPEG-Optimierung |
|
jpegoptim |
JPEG-Komprimierung und Metadatenbereinigung |
|
optipng |
Optimierung von PNG-Dateien |
|
pngquant |
Verlustbehaftete PNG-Komprimierung |
|
pngcrush |
PNG-Komprimierung und Bereinigung |
|
gifsicle |
Optimierung und Bearbeitung von GIF-Dateien |
|
ImageMagick |
Bildbearbeitung und Konvertierung |
|
GraphicsMagick |
Schnelle Bildverarbeitung |
|
advancecomp |
Zusätzliche Komprimierung von PNG-Dateien |
PHP-Beispiele
JPEG-Dateien mit jpegoptim optimieren
<?php
$image = '/home/user/public_html/uploads/bild.jpg';
if (file_exists($image)) {
exec('jpegoptim --strip-all ' . escapeshellarg($image), $output, $return);
if ($return === 0) {
echo "JPEG erfolgreich optimiert.";
} else {
echo "Fehler bei der Optimierung.";
}
}
?>
Parameter:
-
--strip-allentfernt EXIF-, IPTC- und Kommentar-Metadaten. -
Reduziert die Dateigröße häufig um 10–30 %.
PNG-Dateien mit pngquant komprimieren
<?php
$image = '/home/user/public_html/uploads/logo.png';
exec(
'pngquant --force --ext .png --quality=65-85 ' .
escapeshellarg($image),
$output,
$return
);
if ($return === 0) {
echo "PNG erfolgreich komprimiert.";
}
?>
PNG-Dateien mit optipng verlustfrei optimieren
<?php
$image = '/home/user/public_html/uploads/banner.png';
exec(
'optipng -o7 ' . escapeshellarg($image),
$output,
$return
);
echo $return === 0
? "PNG erfolgreich optimiert."
: "Optimierung fehlgeschlagen.";
?>
Bilder mit ImageMagick automatisch verkleinern
<?php
$source = '/home/user/public_html/uploads/foto.jpg';
$target = '/home/user/public_html/uploads/foto-klein.jpg';
exec(
'convert ' .
escapeshellarg($source) .
' -resize 1200x1200\> -quality 85 ' .
escapeshellarg($target),
$output,
$return
);
if ($return === 0) {
echo "Bild erfolgreich verkleinert.";
}
?>
Das Zeichen > bewirkt, dass Bilder nur verkleinert und niemals vergrößert werden.
Automatische Optimierung beim Datei-Upload
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST' &&
isset($_FILES['bild'])) {
$uploadDir = __DIR__ . '/uploads/';
$file = $uploadDir . basename($_FILES['bild']['name']);
if (move_uploaded_file($_FILES['bild']['tmp_name'], $file)) {
$mime = mime_content_type($file);
switch ($mime) {
case 'image/jpeg':
exec(
'jpegoptim --strip-all ' .
escapeshellarg($file)
);
break;
case 'image/png':
exec(
'pngquant --force --ext .png ' .
escapeshellarg($file)
);
break;
}
echo "Datei hochgeladen und optimiert.";
}
}
?>
Bildgröße vor und nach der Optimierung vergleichen
<?php
$file = 'uploads/bild.jpg';
$before = filesize($file);
exec('jpegoptim --strip-all ' . escapeshellarg($file));
clearstatcache();
$after = filesize($file);
echo "Vorher: " . round($before / 1024, 2) . " KB<br>";
echo "Nachher: " . round($after / 1024, 2) . " KB<br>";
echo "Ersparnis: " .
round((1 - $after / $before) * 100, 2) .
"%";
?>
Empfehlung für produktive Webseiten
Für eine optimale Performance empfiehlt sich folgende Reihenfolge:
-
Bild beim Upload verkleinern (
ImageMagick) -
JPEGs mit
jpegoptimoptimieren -
PNGs mit
pngquantund anschließendoptipngverarbeiten -
EXIF-Daten entfernen
-
WebP oder AVIF zusätzlich bereitstellen
Durch die serverseitig verfügbaren Werkzeuge können die Ladezeiten einer Webseite erheblich verbessert und der Bandbreitenverbrauch reduziert werden.