function resizeImage($im,$maxwidth,$maxheight,$name,$filetype) { $pic_width = imagesx($im); $pic_height = imagesy($im); if(($maxwidth && $pic_width > $maxwidth) || ($maxheight && $pic_height > $maxheight)) { if($maxwidth && $pic_width>$maxwidth) { $widthratio = $maxwidth/$pic_width; $resizewidth_tag = true; } if($maxheight && $pic_height>$maxheight) { $heightratio = $maxheight/$pic_height; $resizeheight_tag = true; } if($resizewidth_tag && $resizeheight_tag) { if($widthratio<$heightratio) $ratio = $widthratio; else $ratio = $heightratio; } if($resizewidth_tag && !$resizeheight_tag) $ratio = $widthratio; if($resizeheight_tag && !$resizewidth_tag) $ratio = $heightratio; $newwidth = $pic_width * $ratio; $newheight = $pic_height * $ratio; if(function_exists("imagecopyresampled")) { $newim = imagecreatetruecolor($newwidth,$newheight); imagecopyresampled($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } else { $newim = imagecreate($newwidth,$newheight); imagecopyresized($newim,$im,0,0,0,0,$newwidth,$newheight,$pic_width,$pic_height); } $name = $name.$filetype; imagejpeg($newim,$name); imagedestroy($newim); } else { $name = $name.$filetype; imagejpeg($im,$name); } }
Parameterbeschreibung:
$im Bildobjekt, bevor Sie die Funktion anwenden, Sie müssen imagecreatefromjpeg() verwenden, um das Bildobjekt zu lesen, Wenn die PHP-Umgebung PNG und GIF unterstützt, können Sie auch imagecreatefromgif(), imagecreatefrompng() verwenden;
$maxwidth definiert die maximale Breite des generierten Bildes (Einheit: Pixel)
$maxheight definiert die maximale Breite des generierten Bildes. Höhe (Einheit: Pixel)
$name Name des generierten Bildes
$filetype Endgültig generierter Bildtyp (.jpg/.png/.gif)
Codekommentare :
Zeilen 3–4: Lesen Sie die tatsächliche Breite und Höhe des Bildes, das skaliert werden muss
Zeilen 8–26 : Berechnen Sie die tatsächliche Bildbreite und -höhe sowie das zu erzeugende Bild. Das Komprimierungsverhältnis von Breite und Höhe bestimmt letztendlich, ob das Bild basierend auf der Breite oder der Höhe skaliert werden soll. Wenn Sie das Bild basierend auf der Höhe skalieren möchten, können Sie die Anweisung in Zeile 22 in $widthratio>$heightratio ändern Zeile 28~31: Wenn die tatsächliche Länge oder Breite des Bild ist kleiner als Geben Sie die Länge oder Breite des generierten Bildes an. Entweder wird das Bild basierend auf der Länge skaliert oder das Bild wird basierend auf der Breite skaliert. Zeilen 33–34: Berechnen Sie die Länge und Breite des endgültigen gezoomten Bildes. Zeilen 36–45: Ändern Sie die Bildgröße entsprechend der berechneten Länge und Breite des endgültig generierten Bildes Es gibt zwei Möglichkeiten, die Bildgröße zu ändern : ImageCopyResized()-Funktion insgesamt GD-Versionen Effektiv, aber der Algorithmus zum Skalieren von Bildern ist grob. ImageCopyResamples(), die durch seinen Pixelinterpolationsalgorithmus erhaltenen Bildkanten sind relativ glatt, aber die Geschwindigkeit dieser Funktion ist langsamer als die von ImageCopyResized(). Zeile 47~49: Das verarbeitete Bild wird schließlich generiert Wenn Sie GIF oder PNG generieren müssen, müssen Sie die Funktion imagejpeg() in imagegif() oder imagepng() ändern Zeilen 51–56: Wenn die Länge und Breite des tatsächlichen Bildes kleiner als die angegebene Länge und Breite des generierten Bildes ist, behalten Sie das Bild unverändert, wenn Sie GIF oder PNG generieren müssen , müssen Sie die Funktion imagejpeg() in imagegif() oder imagepng() ändern. Besonderer Hinweis: Die GD-Bibliothek Version 1.6.2 unterstützte zuvor das GIF-Format, aber da das GIF-Format den LZW-Algorithmus verwendet, der Patentrechte beinhaltet, ist dies der Fall ist in der GD 1.6.2-Version nicht verfügbar. Das GIF-Format wird später nicht unterstützt. Wenn Sie sich in einer WINDOWS-Umgebung befinden, müssen Sie nur die PHP.INI-Datei eingeben und extension=php_gd2.dll finden, das # entfernen und APACHE neu starten. Wenn Sie sich in einer Linux-Umgebung befinden und GIF, PNG und unterstützen möchten JPEG müssen Sie die Schriftarten libpng, zlib und Freetype herunterladen und installieren.
Das Obige stellt die PHP-Bildskalierungsfunktion vor: Erzielen gleicher Proportionen ohne Verzerrung, einschließlich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.