Heim  >  Artikel  >  Backend-Entwicklung  >  So komprimieren Sie Bilder in PHP ohne Verzerrung

So komprimieren Sie Bilder in PHP ohne Verzerrung

王林
王林Original
2023-05-06 18:26:071934Durchsuche

Mit der Entwicklung der Internet-Technologie sind Bilder zu einem unverzichtbaren Bestandteil des Webdesigns geworden, aber damit einher geht das Problem der Ladegeschwindigkeit. Um Webseiten schneller zu machen, müssen Bilder komprimiert werden, aber der Komprimierungsprozess kann leicht zu Bildverzerrungen führen. In diesem Fall müssen wir fortschrittlichere Technologie verwenden. In diesem Artikel stellen wir vor, wie Sie mit PHP Bilder ohne Verzerrung komprimieren können.

1. Verwenden Sie die GD-Bibliothek von PHP.

Die GD-Bibliothek von PHP ist eine häufig verwendete Grafikbibliothek, die für verschiedene Grafikvorgänge wie Skalieren, Zuschneiden, Drehen, Wasserzeichen usw. verwendet werden kann. Durch die Nutzung dieser Bibliothek können wir Bilder ohne Verzerrung auf eine bestimmte Größe komprimieren. Werfen wir einen Blick darauf, wie Sie die GD-Bibliothek von PHP für die Bildkomprimierung verwenden.

Stellen Sie zunächst sicher, dass auf Ihrem PHP die GD-Bibliothek installiert ist. Wenn es nicht installiert ist, können Sie es mit dem folgenden Befehl installieren:

sudo apt-get install php-gd

Nach der Installation können wir den Code schreiben, um das Image zu komprimieren. Zuerst müssen wir das Bild laden:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);
?>

Als nächstes müssen wir die komprimierte Bildgröße angeben:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;
?>

Dann müssen wir die tatsächliche Größe und das Komprimierungsverhältnis des Bildes berechnen:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);
?>

Jetzt haben wir es bereits Die tatsächliche Größe des Bildes und das Komprimierungsverhältnis. Der nächste Schritt besteht darin, das Bild auf die angegebene Größe zu komprimieren:

<?php
// 加载原图片
$src_file = 'source.jpg';
$image = imagecreatefromjpeg($src_file);

// 指定压缩后的图片大小
$max_width = 600;
$max_height = 400;

// 计算出图片的实际大小及压缩比例
$width = imagesx($image);
$height = imagesy($image);
$scale = min($max_width/$width, $max_height/$height, 1);

// 计算出压缩后的大小
$new_width = round($scale*$width);
$new_height = round($scale*$height);

// 创建新图片
$new_image = imagecreatetruecolor($new_width, $new_height);

// 复制原图片到新图片并压缩
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);

// 保存压缩后的图片
imagejpeg($new_image, 'compressed.jpg', 90);
?>

Der letzte Schritt besteht darin, das komprimierte Bild zu speichern. Hier verwenden wir die Funktion imagejpeg(), um es im JPEG-Format zu speichern Der dritte Parameter ist die Komprimierungsqualität. Je höher der Wert „Groß“, desto höher die Qualität, desto größer wird die Datei.

2. Verwenden Sie Bibliotheken von Drittanbietern: TinyPNG

Zusätzlich zur Verwendung der GD-Bibliothek von PHP für die Komprimierung können wir auch einige Bibliotheken von Drittanbietern für Operationen verwenden. Eine sehr gute komprimierte Bildbibliothek ist TinyPNG. Es kann JPEG-, PNG- und andere Bilder ohne jegliche Verzerrung auf die kleinste Größe komprimieren.

Zuerst müssen wir uns auf der offiziellen Website von TinyPNG registrieren und einen API-Schlüssel generieren. Anschließend können Sie das Bild direkt über die API komprimieren. Das Folgende ist der Code für die Bildkomprimierung mit TinyPNG:

<?php
require_once 'vendor/autoload.php';

// 指定图片路径
$file = 'source.jpg';

// 压缩图片并保存
\Tinify\setKey("YOUR_API_KEY");
\Tinify\fromFile($file)->toFile('compressed.jpg');
?>

Hier verwenden wir das offiziell bereitgestellte PHP SDK und geben den API-Schlüssel im Code an. Anschließend können wir das Bild mit der Methode fromFile() zur Komprimierung laden, toFile( ) Die Methode besteht darin, das komprimierte Bild im angegebenen Pfad zu speichern.

Zusammenfassung

Ganz gleich, ob Sie die GD-Bibliothek von PHP oder die Drittanbieter-Bibliothek TinyPNG für die Bildkomprimierung verwenden, Sie können die Bilddateigröße so weit wie möglich reduzieren und die Ladegeschwindigkeit der Website verbessern, während Sie gleichzeitig die Bildqualität sicherstellen. In tatsächlichen Projekten müssen wir je nach Situation auswählen und diese flexibel nutzen. Eine gute Bildkomprimierung kann nicht nur die Leistung der Webseite verbessern, sondern den Benutzern auch ein besseres Zugriffserlebnis bieten.

Das obige ist der detaillierte Inhalt vonSo komprimieren Sie Bilder in PHP ohne Verzerrung. 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