Maison  >  Article  >  développement back-end  >  Comment utiliser PHP pour optimiser la taille et la qualité du fichier image de votre site Web

Comment utiliser PHP pour optimiser la taille et la qualité du fichier image de votre site Web

WBOY
WBOYoriginal
2023-06-25 11:31:401131parcourir

À l’ère actuelle du visuel, la qualité de l’image d’un site Web est très importante. Cependant, les fichiers image haute résolution ralentissent souvent la vitesse de chargement du site Web, réduisent l'expérience utilisateur et affectent le classement du site Web. Par conséquent, lors du développement du site Web, nous devons utiliser PHP pour optimiser la taille et la qualité des images et améliorer la vitesse et l’expérience utilisateur du site Web. Voici plusieurs façons d’optimiser la taille et la qualité des images à l’aide de PHP.

1. Utilisez la bibliothèque GD de PHP

La bibliothèque GD de PHP est une extension pour le traitement d'images. Elle peut nous aider à redimensionner, recadrer, faire pivoter, ajouter des filigranes, etc. Une série d'opérations. L'utilisation de cette bibliothèque pour optimiser les images peut obtenir une compression sans perte, c'est-à-dire réduire la taille de l'image sans affecter la qualité de l'image. Voici un exemple de compression d'image via la bibliothèque GD :

// 获取原始图片
$image = imagecreatefromjpeg('original_image.jpg');
// 获取原始图片的宽度和高度
$width = imagesx($image);
$height = imagesy($image);
// 计算缩小的比例
$scale = 0.5;
// 计算新的宽度和高度
$new_width = $width * $scale;
$new_height = $height * $scale;
// 创建新的图片
$new_image = imagecreatetruecolor($new_width, $new_height);
// 进行缩放
imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
// 输出新的图片
imagejpeg($new_image, 'new_image.jpg', 80); // 80代表图片质量,可自行调整
// 释放内存
imagedestroy($image);
imagedestroy($new_image);

Dans cet exemple, nous utilisons la bibliothèque GD pour compresser une image originale et générer une nouvelle image. Parmi eux, la fonction imagecopyresampled() peut réaliser la mise à l'échelle et le recadrage de l'image tout en conservant la qualité de l'image.

2. Utilisez des outils tiers pour la compression d'images

En plus de la bibliothèque GD, il existe des outils tiers qui peuvent nous aider à optimiser les images. Par exemple, nous pouvons utiliser des outils en ligne tels que TinyPNG ou Kraken pour compresser des images. Ces outils peuvent interagir avec l'API via l'extension cURL de PHP pour obtenir une compression des images sans perte. Voici un exemple d'utilisation de TinyPNG pour la compression d'images :

// 引入curl库
require('vendor/autoload.php');
// 获取图片内容
$image_content = file_get_contents('original_image.jpg');
// 初始化curl
$curl = curl_init();
// 设置curl的参数
curl_setopt_array($curl, array(
  CURLOPT_URL => 'https://api.tinify.com/shrink',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => array(
    'Authorization: Basic ' . base64_encode('api_key:'),
    'Content-Type: application/json'
  ),
  CURLOPT_POSTFIELDS => json_encode(array(
    'source' => base64_encode($image_content),
  ))
));
// 执行curl并获取压缩后的图片内容
$response = curl_exec($curl);
// 获取压缩后的图片的大小
$new_size = curl_getinfo($curl, CURLINFO_SIZE_DOWNLOAD);
// 关闭curl
curl_close($curl);
// 解析返回的JSON数据
$data = json_decode($response, true);
// 获取压缩后的图片
$new_image_content = file_get_contents($data['output']['url']);
// 输出压缩后的图片
file_put_contents('new_image.jpg', $new_image_content);

Dans cet exemple, nous utilisons l'API de TinyPNG pour compresser les images, obtenir le contenu de l'image compressée et générer les images compressées.

3. Utilisez des images réactives

Les images réactives font référence à des images qui peuvent ajuster automatiquement la taille et la qualité de l'image en fonction des différentes tailles d'écran, de la densité des pixels et d'autres conditions. L'utilisation d'images réactives peut réduire le temps de chargement et l'utilisation de la bande passante de vos pages Web tout en améliorant l'expérience utilisateur. Nous pouvons utiliser PHP pour générer des images réactives. Voici un exemple d'utilisation de PHP pour générer des images réactives :

// 获取原始图片
$image = imagecreatefromjpeg('original_image.jpg');
// 获取原始图片的宽度和高度
$width = imagesx($image);
$height = imagesy($image);
// 定义响应式图片尺寸
// 可自行根据项目需求设置
$sizes = array(
  '(max-width: 640px) 100vw',
  '50vw',
  '33.3vw'
);
// 定义缩放比例
$scales = array(
  1,
  0.5,
  0.3
);
// 输出响应式图片
echo '<img srcset="';
foreach ($sizes as $key => $size) {
  $new_width = $width * $scales[$key];
  $new_height = $height * $scales[$key];
  $new_image = imagecreatetruecolor($new_width, $new_height);
  imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
  imagejpeg($new_image, 'new_image_'.$key.'.jpg', 80); // 80代表图片质量,可自行调整
  echo 'new_image_'.$key.'.jpg ' . $size . ($key == count($sizes)) ? '' : ',';
  imagedestroy($new_image);
}
echo '" sizes="(max-width: 640px) 100vw, (max-width: 1024px) 50vw, 33.3vw" />';
// 释放内存
imagedestroy($image);

Dans cet exemple, nous avons d'abord ajusté la taille et la qualité de l'image originale via la bibliothèque GD, puis l'avons générée en fonction de différentes tailles. et rapports de mise à l'échelle Images réactives. Enfin, nous générons l'image responsive via la balise a1f02c36ba31691bcfe87b2722de723b en HTML.

Pour résumer, il est très important d'utiliser PHP pour optimiser la taille et la qualité du fichier image du site Web, ce qui peut améliorer efficacement la vitesse et l'expérience utilisateur du site Web. Nous pouvons optimiser grâce à des méthodes telles que la bibliothèque GD, des outils de compression tiers et des images réactives. Dans le même temps, le choix d’une stratégie d’optimisation appropriée basée sur les besoins réels du projet et l’expérience utilisateur est la clé.

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!

Déclaration:
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