Maison > Article > développement back-end > Comment compresser des images en php sans distorsion
Avec le développement de la technologie Internet, les images sont devenues un élément indispensable de la conception Web, mais avec elles se pose le problème de la vitesse de chargement. Afin de rendre les pages Web plus rapides, les images doivent être compressées, mais le processus de compression peut facilement provoquer une distorsion de l'image. Dans ce cas, nous devons utiliser des technologies plus avancées. Dans cet article, nous présenterons comment utiliser PHP pour compresser des images sans distorsion.
1. Utilisez la bibliothèque GD de PHP
La bibliothèque GD de PHP est une bibliothèque graphique couramment utilisée qui peut être utilisée pour gérer diverses opérations graphiques, telles que la mise à l'échelle, le recadrage, la rotation, le filigrane, etc. En tirant parti de cette bibliothèque, nous pouvons compresser les images à une taille spécifiée sans distorsion. Voyons comment utiliser la bibliothèque GD de PHP pour la compression d'images.
Tout d’abord, assurez-vous que la bibliothèque GD est installée sur votre PHP. S'il n'est pas installé, vous pouvez l'installer via la commande suivante :
sudo apt-get install php-gd
Après l'installation, nous pouvons écrire le code pour compresser l'image. Tout d'abord, nous devons charger l'image :
<?php // 加载原图片 $src_file = 'source.jpg'; $image = imagecreatefromjpeg($src_file); ?>
Ensuite, nous devons spécifier la taille de l'image compressée :
<?php // 加载原图片 $src_file = 'source.jpg'; $image = imagecreatefromjpeg($src_file); // 指定压缩后的图片大小 $max_width = 600; $max_height = 400; ?>
Ensuite, nous devons calculer la taille réelle et le taux de compression de l'image :
<?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); ?>
Maintenant, nous avons déjà la taille réelle de l'image Taille et taux de compression, l'étape suivante consiste à compresser l'image à la taille spécifiée :
<?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); ?>
La dernière étape consiste à enregistrer l'image compressée Ici, nous utilisons la fonction imagejpeg() pour l'enregistrer au format JPEG. format Le troisième paramètre est la qualité de la compression. Plus la valeur Large est élevée, plus la qualité est élevée, plus le fichier sera volumineux.
2. Utiliser des bibliothèques tierces : TinyPNG
En plus d'utiliser la bibliothèque GD de PHP pour la compression, nous pouvons également utiliser certaines bibliothèques tierces pour les opérations. Parmi eux, une très bonne bibliothèque d’images compressées est TinyPNG. Il peut compresser les images JPEG, PNG et autres à la plus petite taille sans aucune distorsion.
Tout d’abord, nous devons nous inscrire sur le site officiel de TinyPNG et générer une clé API. Ensuite, vous pouvez compresser l’image directement via l’API. Voici le code pour la compression d'image à l'aide de TinyPNG :
<?php require_once 'vendor/autoload.php'; // 指定图片路径 $file = 'source.jpg'; // 压缩图片并保存 \Tinify\setKey("YOUR_API_KEY"); \Tinify\fromFile($file)->toFile('compressed.jpg'); ?>
Ici, nous utilisons le SDK PHP officiellement fourni et spécifions la clé API dans le code. Ensuite, nous pouvons utiliser la méthode fromFile() pour charger l'image à compresser, toFile(. ) La méthode consiste à enregistrer l'image compressée dans le chemin spécifié.
Résumé
Que vous utilisiez la bibliothèque GD de PHP ou la bibliothèque tierce TinyPNG pour la compression d'images, vous pouvez réduire autant que possible la taille du fichier image et améliorer la vitesse de chargement du site Web tout en garantissant la qualité de l'image. Dans les projets réels, nous devons choisir en fonction de situations spécifiques et les utiliser avec flexibilité. Faire un bon travail de compression d’image peut non seulement améliorer les performances des pages Web, mais également offrir aux utilisateurs une meilleure expérience d’accès.
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!