Bild verkleinert Script
Das PHP Script zum Upload eines Bildes mit Resize-Funktion kann ein Bild proportional verkleinern. Es funktioniert mit gif-, jpg- und png-Dateien. Zur Nutzung dieser Funktionen muss die GD Bibliothek installiert sein.
GD Library
gd_info()
Zur dynamischen Erstellung, Bearbeitung und Darstellung von Grafiken mit PHP dient die integrierte GDlib. In PHP5 ist die GD2 dabei. Informationen über die Fähigkeiten der zurzeit kompilierten GD liefert folgender Code:
<?php var_dump(gd_info()); ?>
Ausführliche Beispiele sind auf der PHP Website bei der Image Funktionsreferenz dokumentiert.
Es wurde noch kein Bild hochgeladen. (Bitte nutzen Sie das Formular.)Monsterscript
@imagecreatefromgif() und @imagecreatetruecolor()
is_callable() und imagecopyresampled()
<?php
// Vorbedingungen
if(isset($_FILES['PORTRAIT'])) {
if($_FILES['PORTRAIT']['error']=="0") { // START if FILES no Error
$source=$_FILES['PORTRAIT']['tmp_name']; // temporary folder
// START if gif, png oder jpg
// check type of file, add extension and apply according @function
if ($_FILES['PORTRAIT']['type']=="image/gif"
or $_FILES['PORTRAIT']['type']=="image/png" or $_FILES['PORTRAIT']['type']=="image/x-png"
or $_FILES['PORTRAIT']['type']=="image/jpeg" or $_FILES['PORTRAIT']['type']=="image/pjpeg"){
if ($_FILES['PORTRAIT']['type']=="image/gif") {
$extension="gif";
$image = @imagecreatefromgif($source);
} elseif ($_FILES['PORTRAIT']['type']=="image/png" or $_FILES['PORTRAIT']['type']=="image/x-png") {
$extension="png";
$image = @imagecreatefrompng($source);
} else {
$extension="jpg";
$image = @imagecreatefromjpeg($source);
}
// Bild verkleinern, wenn nötig
// Bildparameter – nach Bedarf konfigurieren.
$imageMaxHeight = 160; // maximale Höhe in Pixeln
$imageMaxWidth = 120; // maximale Breite in Pixeln
$quality = 100; // JPEG-Qualitätsfaktor 1...100
list($oldWidth,$oldHeight) = getimagesize($source);
// START resizing
if (($oldWidth > $imageMaxWidth) || ($oldHeight > $imageMaxHeight)) {
// Sind wir hauptsächlich zu breit oder zu hoch?
$widthRatio = $oldWidth / $imageMaxWidth;
$heightRatio = $oldHeight / $imageMaxHeight;
// Neue Abmessungen berechnen.
if ($widthRatio >= $heightRatio) { // hauptsächlich zu breit
$newWidth = $imageMaxWidth;
$newHeight = $oldHeight / $widthRatio;
} else { // hauptsächlich zu hoch
$newHeight = $imageMaxHeight;
$newWidth = $oldWidth / $heightRatio;
}
// Grafik mit den neuen Dimensionen erzeugen.
$newImage = @imagecreatetruecolor($newWidth, $newHeight);
// Existierende Grafik per Resample herüberkopieren ...
if (is_callable("imagecopyresampled")) {
imagecopyresampled($newImage, $image,
0, 0, 0, 0, $newWidth, $newHeight,
$oldWidth, $oldHeight);
} else { // ... oder per Resize übernehmen (Qualitätsverlust).
imagecopyresized($newImage, $image,
0, 0, 0, 0, $newWidth, $newHeight,
$oldWidth, $oldHeight);
}
} // END resizing
else
{
$newImage = $image; // Bild ist klein genug.
}
$Nameusr = htmlspecialchars($_POST["Name"], ENT_QUOTES);
// target folder, name and extension for resized/renamed Portrait Photo
$target="upload/".$Nameusr.".".$extension;
// make and save images now
switch ($extension) {
case "jpg":
imagejpeg($newImage, $target, $quality);
break;
case "png":
imagepng($newImage, $target);
break;
case "gif":
imagegif($newImage, $target);
break;
}
// show image
$size=getImageSize($target);
$imgstr="<p><img width=\"$size[0]\" height=\"$size[1]\" ";
$imgstr .="src=\"$target\" alt=\"uploaded image\" /></p>";
print $imgstr;
// show image attributes
print "<b>Uploaded file</b><br />";
print "url: ".$target."<br />";
print "size: ".$_FILES['PORTRAIT']['size']."<br />";
print "error: ".$_FILES['PORTRAIT']['error']."<br />";
} // END if gif, png oder jpg
} // END if No Error
else {
echo "<strong>Es ist ein Fehler aufgetreten.</strong> (error: ".$_FILES['PORTRAIT']['error'].")";
}
} // END if isset
else {
echo "<strong>Es wurde noch kein Bild hochgeladen.</strong> (Bitte nutzen Sie das <a href='img_resize_form.php'>Formular</a>.)";
}
?>