PHP-Bildverarbeitung: Beispiel für die Bildskalierung mit der Funktion imagecopyresampled

高洛峰
Freigeben: 2023-03-04 09:38:01
Original
1382 Leute haben es durchsucht

Website-Optimierung kann sich nicht nur auf den Code konzentrieren. Der Inhalt ist auch eines der wichtigsten Objekte der Website, und Bilder sind der wichtigste Inhalt der Website. Das Wichtigste bei der Optimierung von Bildern ist die automatische Skalierung aller großen Bilder, die auf die Website hochgeladen werden, in kleine Bilder (die Größe reicht für die Webseite aus), um den Speicherplatz um das N-fache zu reduzieren und die Geschwindigkeit zu erhöhen Herunterladen und Durchsuchen. Daher muss die Aufgabe, Bilder in eine dynamische Website zu skalieren, verarbeitet werden. Sie ist häufig mit dem Hochladen von Dateien verbunden und kann beim Hochladen von Bildern geändert werden. Natürlich ist es manchmal notwendig, die Bildskalierung separat zu behandeln. Wenn Sie beispielsweise beim Erstellen einer Bilderliste direkt ein großes Bild verwenden und es bei der Anzeige nur in ein kleines Bild hineinzoomen, verlangsamt dies nicht nur den Download Geschwindigkeit, sondern reduzieren auch die Reaktionszeit der Seite. Wenn Sie auf eine solche Anwendung stoßen, wird beim Hochladen eines Bildes normalerweise ein kleines Symbol angezeigt, das speziell zum Erstellen einer Liste für das Bild verwendet wird. Wenn Sie auf dieses kleine Symbol klicken, wird das große Bild zum Durchsuchen heruntergeladen.

Verwenden Sie die GD-Bibliothek, um die Bildskalierung zu verarbeiten, normalerweise mit einer der beiden Funktionen imagecopyresized() und imagecopyresampled(). Die Qualität wird nach Verwendung der Funktion imagecopyresampled() besser. Hier stellen wir nur die Verwendung der Funktion imagecopyresampled() vor. Der Prototyp dieser Funktion sieht folgendermaßen aus:

  bool imagecopyresampled(resource dst_image,resource src_image,int dst_x,int dst_y,int src_x,int src_y,int dst_w,int dst_h ,int src_w,int src_h)
Nach dem Login kopieren

Diese Funktion kopiert einen quadratischen Bereich von einem Bild in ein anderes und interpoliert dabei die Pixelwerte reibungslos. Dadurch wird die Größe des Bildes reduziert und gleichzeitig eine extrem hohe Auflösung beibehalten. Gibt TRUE zurück, wenn erfolgreich, FALSE, wenn fehlgeschlagen. Die Parameter dst_image und src_image sind die Kennungen des Zielbilds bzw. des Quellbilds. Wenn Quelle und Ziel unterschiedliche Breiten und Höhen haben, wird das Bild entsprechend verkleinert und gestreckt, wobei sich die Koordinaten auf die obere linke Ecke beziehen. Diese Funktion kann zum Kopieren innerhalb desselben Bildes verwendet werden (wenn dst_image und src_image gleich sind). Wenn sich die Bereiche jedoch überlappen, sind die Ergebnisse unvorhersehbar. Schreiben Sie im folgenden Beispiel am Beispiel des JPEG-Bildformats eine Bildskalierungsfunktion thumb(). Der Code lautet wie folgt:

<?php
    //用于对图片进行缩放
    function thumb($filename,$width=200,$height=200){
        //获取原图像$filename的宽度$width_orig和高度$height_orig
        list($width_orig,$height_orig) = getimagesize($filename);
        //根据参数$width和$height值,换算出等比例缩放的高度和宽度
        if ($width && ($width_orig<$height_orig)){
            $width = ($height/$height_orig)*$width_orig;
        }else{
            $height = ($width / $width_orig)*$height_orig;
        }
 
        //将原图缩放到这个新创建的图片资源中
        $image_p = imagecreatetruecolor($width, $height);
        //获取原图的图像资源
        $image = imagecreatefromjpeg($filename);
 
        //使用imagecopyresampled()函数进行缩放设置
        imagecopyresampled($image_p,$image,0,0,0,0,$width,$height,$width_orig,$height_orig);
 
        //将缩放后的图片$image_p保存,100(质量最佳,文件最大)
        imagejpeg($image_p,$filename);
 
        imagedestroy($image_p);
        imagedestroy($image);
    }
 
    thumb("brophp.jpg",100,100);
?>
Nach dem Login kopieren

Weitere PHP-Bildverarbeitungsbeispiele für die Implementierung der imagecopyresampled-Funktion Bildskalierung Für verwandte Artikel beachten Sie bitte die chinesische PHP-Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage