Maison > développement back-end > Problème PHP > Comment compresser des images en php sans distorsion

Comment compresser des images en php sans distorsion

王林
Libérer: 2023-05-06 18:26:07
original
1978 Les gens l'ont consulté

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
Copier après la connexion

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);
?>
Copier après la connexion

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;
?>
Copier après la connexion

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);
?>
Copier après la connexion

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);
?>
Copier après la connexion

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');
?>
Copier après la connexion

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!

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