In der modernen Web-Entwicklung ist das Hochladen von Bildern eine alltägliche Anforderung. Aber wie können wir sicherstellen, dass die hochgeladenen Bilder die richtige Größe haben, um sowohl den Speicherplatz als auch die Ladezeit zu optimieren? In diesem Blog-Beitrag werden wir einen einfachen, aber robusten PHP-Code vorstellen, der nicht nur ein Bild auf den Server lädt, sondern auch seine Abmessungen überprüft und anpasst.
Die Funktion verwendet die PHP-GD-Bibliothek, um die Abmessungen des hochgeladenen Bilds zu erfassen und es bei Bedarf zu skalieren. Falls während des Vorgangs ein Fehler auftritt, fällt die Funktion auf den herkömmlichen move_uploaded_file()
-Ansatz zurück, um sicherzustellen, dass der Upload nicht fehlschlägt.
try {
$is = getimagesize($_FILES[$field]['tmp_name']);
if (!$is) throw new \Exception();
list($width, $height) = $is;
if (!is_numeric($width) || $width <= 0) throw new \Exception();
if (!is_numeric($height) || $height <= 0) throw new \Exception();
$image = imagecreatefromstring(file_get_contents($_FILES[$field]['tmp_name']));
if ($image === false) throw new \Exception();
$max_width = 1024; $max_height = 768;
$ratio = min($max_width / $width, $max_height / $height);
$new_width = $width * $ratio; $new_height = $height * $ratio;
$new_image = imagecreatetruecolor($new_width, $new_height);
if ($new_image === false) throw new \Exception();
$b = imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
if ($b === false) throw new \Exception();
$b = imagejpeg($new_image, $path.$filename, 75);
if ($b === false) throw new \Exception();
imagedestroy($image);
imagedestroy($new_image);
} catch (\Exception $e) {
// Bild alternativ hochladen
move_uploaded_file($_FILES[$field]['tmp_name'], $path.$filename);
}