Heim  >  Artikel  >  Backend-Entwicklung  >  PHP-Zoombild ohne Verformung

PHP-Zoombild ohne Verformung

尚
Original
2019-10-31 14:57:002621Durchsuche

PHP-Zoombild ohne Verformung

php nicht deformiertes Zoombild:

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, müssen Sie es lesen mit imagecreatefromjpeg() Holen Sie sich das Bildobjekt. Wenn die PHP-Umgebung PNG und GIF unterstützt, können Sie auch imagecreatefromgif() verwenden.

$maxwidth definiert die maximale Breite des generierten Bildes (Einheit: Pixel). )

$maxheight Maximale Höhe des generierten Bildes (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 die Breite und Höhe des zu erzeugenden Bildes. Das Komprimierungsverhältnis bestimmt letztendlich, ob die Bildskalierung auf der Breite oder der Höhe basiert. Das aktuelle Programm skaliert das Bild auf der Grundlage der Breite. Wenn Sie das Bild basierend auf der Höhe skalieren möchten, können Sie die Anweisung in Zeile 22 in $widthratio>$heightratio ändern.

Zeilen 28–31: Wenn die Länge oder Breite des tatsächlichen Bildes kleiner als die Länge ist oder Breite des generierten Bildes angegebene Breite, dann wird das Bild entweder 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: Die Funktion ImageCopyResized() ist in allen GD-Versionen gültig. Aber es skaliert das Bild. Der Algorithmus ist relativ grob. ImageCopyResamples(), die durch seinen Pixelinterpolationsalgorithmus erhaltenen Bildkanten sind relativ glatt, aber die Geschwindigkeit dieser Funktion ist langsamer als die von ImageCopyResized().

Zeilen 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 bis 56: Wenn die Länge und Breite des tatsächlichen Bildes kleiner als die angegebene Länge und Breite des generierten Bildes sind, behalten Sie das Bild bei, wie es ist. Wenn Sie GIF oder PNG generieren müssen, müssen Sie dies ebenfalls ändern imagejpeg()-Funktion zu imagegif() oder imagepng().

Besonderer Hinweis:

Die GD-Bibliotheksversion 1.6.2 unterstützte zuvor das GIF-Format. Da das GIF-Format jedoch den LZW-Algorithmus verwendet und Patentrechte beinhaltet, wird das GIF-Format nach der GD-Version nicht mehr unterstützt 1.6.2. 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.

Empfohlen: PHP-Server

Das obige ist der detaillierte Inhalt vonPHP-Zoombild ohne Verformung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn