Comment compresser des images lors de l'enregistrement d'images distantes à l'aide de PHP ?

WBOY
Libérer: 2023-07-14 14:46:01
original
909 Les gens l'ont consulté

Comment compresser des images lors de l'enregistrement d'images distantes à l'aide de PHP ?

Dans le développement web, il est souvent nécessaire de sauvegarder les images distantes sur le serveur local. Cependant, lors du processus d'enregistrement des images, il est parfois nécessaire de compresser les images pour réduire la taille des fichiers image, économiser de l'espace de stockage et améliorer la vitesse de chargement du site Web. Cet article explique comment utiliser PHP pour enregistrer des images distantes et les compresser.

Avant de commencer, nous devons nous assurer que l'extension php-gd est activée sur le serveur. L'extension php-gd est l'extension de base permettant à PHP de traiter les images. Si votre serveur n'a pas installé l'extension php-gd, vous devez d'abord l'installer.

Tout d'abord, nous devons récupérer le contenu de l'image distante et l'enregistrer localement. Vous pouvez utiliser la fonction file_get_contents() pour obtenir les données binaires de l'image distante. Voici un exemple de code :

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

// 保存图片到本地
file_put_contents('local_image.jpg', $data);
Copier après la connexion

Le code ci-dessus obtiendra les données binaires de l'image à partir de l'adresse distante via la fonction file_get_contents() et enregistrera les données binaires en tant que fichier image local à l'aide de la fonction file_put_contents().

Ensuite, nous devons utiliser la bibliothèque GD de PHP pour compresser l'image. La bibliothèque GD fournit une série de fonctions pour traiter les images, telles que la mise à l'échelle, le recadrage, la rotation, etc. Nous pouvons utiliser la fonction imagecreatefromjpeg() pour charger l'image en tant qu'objet image GD, et utiliser la fonction imagejpeg() pour enregistrer l'image au format JPEG.

// 压缩图片
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);
Copier après la connexion

Le code ci-dessus définit une fonction compressImage(), qui accepte trois paramètres : le chemin de l'image source, le chemin de l'image cible et la qualité de compression. À l'intérieur de la fonction, la fonction imagecreatefromjpeg() est utilisée pour charger l'image source en tant qu'objet image GD, et la fonction imagejpeg() est utilisée pour enregistrer l'image en tant qu'image au format JPEG avec la qualité de compression spécifiée. Enfin, utilisez la fonction imagedestroy() pour libérer les ressources image.

Dans le code ci-dessus, vous pouvez modifier la qualité de compression pour contrôler le degré de compression de l'image. La qualité de compression varie de 0 à 100, avec des valeurs plus élevées offrant une meilleure qualité d'image mais des tailles de fichiers plus grandes.

Enfin, nous pouvons enregistrer et compresser l'image distante en appelant la fonction compressImage(). Ce qui suit est un exemple complet :

// 获取远程图片的二进制数据
$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);
Copier après la connexion

L'exemple de code ci-dessus enregistre l'image distante en local et la compresse en appelant la fonction compressImage(). L'image compressée finale sera enregistrée sous le nom de fichier compressé_image.jpg.

Avec la bibliothèque GD de PHP, nous pouvons facilement compresser les images distantes enregistrées pour améliorer les performances du site Web et l'expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal