Heim  >  Artikel  >  Backend-Entwicklung  >  Wie komprimiere ich Bilder beim Speichern von Remote-Bildern mit PHP?

Wie komprimiere ich Bilder beim Speichern von Remote-Bildern mit PHP?

WBOY
WBOYOriginal
2023-07-14 14:45:10895Durchsuche

Wie komprimiere ich Bilder beim Speichern von Remote-Bildern mit PHP?

Bei der Webentwicklung ist es oft notwendig, Remote-Bilder auf dem lokalen Server zu speichern. Beim Speichern von Bildern ist es jedoch manchmal erforderlich, die Bilder zu komprimieren, um die Größe der Bilddateien zu verringern, Speicherplatz zu sparen und die Ladegeschwindigkeit der Website zu verbessern. In diesem Artikel wird erläutert, wie Sie mit PHP Remote-Bilder speichern und komprimieren.

Bevor wir beginnen, müssen wir sicherstellen, dass die Erweiterung php-gd auf dem Server aktiviert ist. Die Erweiterung php-gd ist die grundlegende Erweiterung für PHP zur Verarbeitung von Bildern. Wenn Ihr Server die Erweiterung php-gd nicht installiert hat, müssen Sie sie zuerst installieren.

Zuerst müssen wir den Inhalt des Remote-Images abrufen und lokal speichern. Sie können die Funktion file_get_contents() verwenden, um die Binärdaten des Remote-Bildes abzurufen. Das Folgende ist ein Beispielcode:

// 获取远程图片的二进制数据
$data = file_get_contents('http://example.com/image.jpg');

// 保存图片到本地
file_put_contents('local_image.jpg', $data);

Der obige Code ruft die Binärdaten des Bildes von der Remote-Adresse über die Funktion file_get_contents() ab und speichert die Binärdaten mit der Funktion file_put_contents() als lokale Bilddatei.

Als nächstes müssen wir die GD-Bibliothek von PHP verwenden, um das Bild zu komprimieren. Die GD-Bibliothek bietet eine Reihe von Funktionen zum Bearbeiten von Bildern, wie z. B. Skalieren, Zuschneiden, Drehen usw. Wir können die Funktion imagecreatefromjpeg() verwenden, um das Bild als GD-Bildobjekt zu laden, und die Funktion imagejpeg() verwenden, um das Bild im JPEG-Format zu speichern.

// 压缩图片
function compressImage($source, $destination, $quality) {
    // 打开源图像
    $image = imagecreatefromjpeg($source);
    
    // 保存为JPEG格式,同时设定质量
    imagejpeg($image, $destination, $quality);
    
    // 释放图像资源
    imagedestroy($image);
}

// 原图路径
$source = 'local_image.jpg';
// 压缩后的图路径
$destination = 'compressed_image.jpg';
// 压缩质量,0-100,值越大质量越好,文件越大
$quality = 80;

// 压缩图片
compressImage($source, $destination, $quality);

Der obige Code definiert eine compressImage()-Funktion, die drei Parameter akzeptiert: Quellbildpfad, Zielbildpfad und Komprimierungsqualität. Innerhalb der Funktion wird die Funktion imagecreatefromjpeg() verwendet, um das Quellbild als GD-Bildobjekt zu laden, und die Funktion imagejpeg() wird verwendet, um das Bild als Bild im JPEG-Format mit der angegebenen Komprimierungsqualität zu speichern. Verwenden Sie abschließend die Funktion imagedestroy(), um die Bildressourcen freizugeben.

Im obigen Code können Sie die Komprimierungsqualität ändern, um den Grad der Bildkomprimierung zu steuern. Die Komprimierungsqualität reicht von 0 bis 100, wobei höhere Werte eine bessere Bildqualität, aber größere Dateigrößen bieten.

Schließlich können wir das Remote-Bild speichern und komprimieren, indem wir die Funktion compressImage() aufrufen. Das Folgende ist ein vollständiges Beispiel:

// 获取远程图片的二进制数据
$data = file_get_contents('http://example.com/image.jpg');
// 保存图片到本地
file_put_contents('local_image.jpg', $data);

// 压缩图片
function compressImage($source, $destination, $quality) {
    // 打开源图像
    $image = imagecreatefromjpeg($source);
    
    // 保存为JPEG格式,同时设定质量
    imagejpeg($image, $destination, $quality);
    
    // 释放图像资源
    imagedestroy($image);
}

// 原图路径
$source = 'local_image.jpg';
// 压缩后的图路径
$destination = 'compressed_image.jpg';
// 压缩质量,0-100,值越大质量越好,文件越大
$quality = 80;

// 压缩图片
compressImage($source, $destination, $quality);

Der obige Beispielcode speichert das Remote-Bild lokal und komprimiert es durch Aufrufen der Funktion compressImage(). Das endgültige komprimierte Bild wird als Datei „compressed_image.jpg“ gespeichert.

Mit der GD-Bibliothek von PHP können wir die gespeicherten Remote-Bilder einfach komprimieren, um die Website-Leistung und das Benutzererlebnis zu verbessern.

Das obige ist der detaillierte Inhalt vonWie komprimiere ich Bilder beim Speichern von Remote-Bildern mit PHP?. 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