Maison >développement back-end >tutoriel php >Fonctions de traitement d'images pour les applications PHP

Fonctions de traitement d'images pour les applications PHP

王林
王林original
2023-06-20 10:24:101686parcourir

PHP, en tant que langage de développement Web puissant, possède naturellement diverses fonctions d'application pratiques. Parmi eux, la fonction de traitement des images en fait partie. Le traitement d'image est une partie inévitable du développement Web. De la simple découpe et mise à l'échelle d'image aux effets spéciaux d'image complexes, aux filtres, etc., des fonctions de traitement d'image sont nécessaires. Cet article présentera certaines fonctions de traitement d'image couramment utilisées en PHP.

1. Types d'images et représentation des données

En PHP, les types d'images courants incluent JPEG, GIF, PNG, etc. Différents types d'images ont des structures de données différentes. Par exemple, les données des images JPEG sont basées sur les coefficients de transformation DCT, tandis que les données des images PNG sont basées sur les valeurs de couleur des pixels. En PHP, nous devons utiliser différentes bibliothèques d'extensions pour analyser et traiter différents types d'images, notamment les extensions GD2 et Imagick.

Que vous utilisiez GD2 ou Imagick, nous devons charger les données d'image en mémoire pour les traiter. Par conséquent, lorsque vous utilisez les fonctions de traitement d’image, vous devez d’abord convertir les données d’image dans le type de données correspondant. En prenant GD2 comme exemple, les méthodes courantes de chargement des données d'image sont les suivantes :

//加载JPEG图片
$image = imagecreatefromjpeg('image.jpg');
//加载PNG图片
$image = imagecreatefrompng('image.png');
//加载GIF图片
$image = imagecreatefromgif('image.gif');

Lors de l'utilisation d'Imagick, les données d'image doivent être chargées et traitées via l'objet Imagick. Par exemple :

//实例化Imagick对象并加载图片
$im = new Imagick('image.jpg');
//调整图片大小
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;

2. Opérations de base

  1. Redimensionnement des images

Le redimensionnement d'une image est une exigence courante en matière de traitement d'image, qu'il s'agisse de réduction ou d'agrandissement. Dans GD2, vous pouvez utiliser la fonction imagecopyresampled() pour réaliser un redimensionnement d'image. Cette fonction mettra à l'échelle l'image originale en fonction de la taille spécifiée et produira les données d'image ajustées. Par exemple :

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//缩放图片
imagecopyresampled($dst, $src, 0, 0, 0, 0, $dst_width, $dst_height, imagesx($src), imagesy($src));
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);

Dans Imagick, le redimensionnement de l'image est réalisé via la méthode resizeImage(). Par exemple :

//打开原始图片
$im = new Imagick('image.jpg');
//设置目标图片尺寸
$im->resizeImage(320, 240, Imagick::FILTER_LANCZOS, 1);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
  1. Picture Cutting

Picture Cutting est généralement utilisé pour recadrer et intercepter des images. Dans GD2, vous pouvez utiliser la fonction imagecopy() pour réaliser la découpe d'image. Cette fonction copiera les pixels de la zone spécifiée de l'image originale vers l'image cible et affichera les données de l'image découpée. Par exemple :

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置目标图片尺寸
$dst_width = 320;//目标宽度
$dst_height = 240;//目标高度
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//创建目标图片
$dst = imagecreatetruecolor($dst_width, $dst_height);
//剪切图片
imagecopy($dst, $src, 0, 0, $x, $y, $width, $height);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($dst);
//释放内存
imagedestroy($src);
imagedestroy($dst);

Dans Imagick, le recadrage des images est implémenté via la méthode cropImage(). Par exemple :

//打开原始图片
$im = new Imagick('image.jpg');
//设置剪切位置和尺寸
$x = 100;//起始X坐标
$y = 100;//起始Y坐标
$width = 160;//剪切宽度
$height = 120;//剪切高度
//剪切图片
$im->cropImage($width, $height, $x, $y);
//输出图片
header('Content-Type: image/jpeg');
echo $im;

3. Opérations avancées

  1. Filigrane de texte

Le filigrane de texte est un effet spécial d'image courant, qui est souvent utilisé dans des scénarios tels que la génération de vignettes et le téléchargement d'images par lots. Dans GD2, vous pouvez utiliser la fonction imagettftext() pour implémenter des filigranes de texte. Cette fonction dessinera le texte spécifié sur l'image et affichera les données d'image filigranées. Par exemple :

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//设置文本颜色
$color = imagecolorallocate($src, 255, 0, 0);
//设置字体文件路径
$font = 'arial.ttf';
//设置字体大小
$size = 20;
//设置水印文本
$text = 'www.example.com';
//计算文本位置
$bbox = imagettfbbox($size, 0, $font, $text);
$x = imagesx($src) - $bbox[2] - 5;
$y = imagesy($src) - $bbox[1] - 5;
//添加水印
imagettftext($src, $size, 0, $x, $y, $color, $font, $text);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);

Dans Imagick, les filigranes de texte sont implémentés via la méthode annotateImage(). Par exemple :

//打开原始图片
$im = new Imagick('image.jpg');
//创建画笔对象
$draw = new ImagickDraw();
//设置字体路径和大小
$draw->setFont('arial.ttf');
$draw->setFontSize(20);
//设置文本位置和颜色
$draw->setGravity(Imagick::GRAVITY_SOUTHEAST);
$draw->setFillColor('red');
//添加水印文本
$draw->annotation(5, 5, 'www.example.com');
//绘制水印
$im->drawImage($draw);
//输出图片
header('Content-Type: image/jpeg');
echo $im;
  1. Effets spéciaux d'image

Les effets spéciaux d'image sont au centre et la difficulté du traitement d'image, tels que le flou, la netteté, le relief et d'autres effets, qui doivent être traités via des algorithmes. Dans GD2, vous pouvez utiliser la fonction imagefilter() pour implémenter des effets spéciaux d’image. Cette fonction filtrera l'image originale et affichera les données d'image après effets spéciaux. Par exemple :

//打开原始图片
$src = imagecreatefromjpeg('image.jpg');
//创建滤镜
$filter = IMG_FILTER_GRAYSCALE;//灰度滤镜
//应用滤镜
imagefilter($src, $filter);
//输出图片
header('Content-Type: image/jpeg');
imagejpeg($src);
//释放内存
imagedestroy($src);

Dans Imagick, les effets spéciaux des images sont obtenus par différentes méthodes. Par exemple, utilisez la méthode gaussianBlurImage() pour obtenir l'effet de flou gaussien :

//打开原始图片
$im = new Imagick('image.jpg');
//应用高斯模糊滤镜
$im->gaussianBlurImage(10, 5);
//输出图片
header('Content-Type: image/jpeg');
echo $im;

IV Résumé

Cet article présente les fonctions courantes de traitement d'image en PHP, y compris les opérations de base et les opérations avancées. Qu'il s'agisse de redimensionnement d'image, de recadrage, de filigrane de texte ou d'effets spéciaux d'image, tout cela peut être réalisé grâce aux deux bibliothèques d'extensions de GD2 et Imagick. Lors de l'utilisation de ces fonctions, nous devons prêter attention aux différences dans les types d'images et la représentation des données, et choisir les fonctions et paramètres appropriés en fonction des besoins réels. Dans le même temps, vous devez également prêter attention à des problèmes tels que l’utilisation de la mémoire et les performances pour éviter de mettre la pression sur le serveur.

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