Maison  >  Article  >  développement back-end  >  Méthodes de traitement des filigranes d’images et des vignettes dans le développement PHP ?

Méthodes de traitement des filigranes d’images et des vignettes dans le développement PHP ?

WBOY
WBOYoriginal
2023-06-30 11:17:131031parcourir

Comment gérer les filigranes et les vignettes d'images dans le développement PHP

Résumé : Concernant la nécessité de traiter les images dans le développement PHP, les problèmes courants incluent l'ajout de filigranes et la génération de vignettes. Cet article explique comment utiliser la bibliothèque GD de PHP pour implémenter des filigranes d'images et des vignettes afin d'aider les développeurs à résoudre ces problèmes.

Introduction
Dans le développement Web, le traitement des images est une exigence courante. Qu'il s'agisse d'une bannière de site Web ou d'un album photo personnel, il y aura des exigences pour ajouter des filigranes et générer des vignettes. Ces fonctions peuvent être facilement implémentées à l'aide de la bibliothèque GD de PHP. Cet article explique comment utiliser la bibliothèque GD pour traiter les filigranes d'images et générer des vignettes.

1. Traitement du filigrane d'image
Le filigrane d'image fait référence à la superposition d'un calque transparent avec du texte ou des images sur l'image originale pour protéger les droits d'auteur de l'image ou ajouter un logo personnalisé. En PHP, nous pouvons implémenter la fonction de filigrane d'image grâce aux fonctions de la bibliothèque GD. Ce qui suit est un exemple de code simple :

<?php
// 打开原始图片
$srcImg = imagecreatefromjpeg('original.jpg');

// 打开水印图片
$watermarkImg = imagecreatefrompng('watermark.png');

// 获取原始图片和水印图片的尺寸
$srcImgWidth = imagesx($srcImg);
$srcImgHeight = imagesy($srcImg);
$watermarkImgWidth = imagesx($watermarkImg);
$watermarkImgHeight = imagesy($watermarkImg);

// 指定水印的位置(这里将水印放在原始图片的右下角)
$watermarkX = $srcImgWidth - $watermarkImgWidth - 10;
$watermarkY = $srcImgHeight - $watermarkImgHeight - 10;

// 将水印图片复制到原始图片上
imagecopy($srcImg, $watermarkImg, $watermarkX, $watermarkY, 0, 0, $watermarkImgWidth, $watermarkImgHeight);

// 保存处理后的图片
imagejpeg($srcImg, 'processed.jpg');

// 释放内存
imagedestroy($srcImg);
imagedestroy($watermarkImg);
?>

Dans l'exemple de code ci-dessus, ouvrez d'abord l'image originale et l'image en filigrane via les fonctions imagecreatefromjpeg() et imagecreatefrompng() respectivement. Ensuite, obtenez la largeur et la hauteur de l'image grâce aux fonctions imagesx() et imagesy(). Ensuite, spécifiez la position du filigrane en ajustant les valeurs de $watermarkX et $watermarkY. Ici, le filigrane est placé dans le coin inférieur droit du. image originale. Enfin, utilisez la fonction imagecopy() pour copier l'image du filigrane à l'emplacement spécifié de l'image originale, et utilisez la fonction imagejpeg() pour enregistrer l'image traitée. Enfin, utilisez la fonction imagedestroy() pour libérer la mémoire. imagecreatefromjpeg()imagecreatefrompng()函数分别打开原始图片和水印图片。然后,通过imagesx()imagesy()函数获取图片的宽度和高度。接着,通过调整$watermarkX$watermarkY的值来指定水印的位置,这里将水印放在原始图片的右下角。最后,通过imagecopy()函数将水印图片复制到原始图片的指定位置上,并使用imagejpeg()函数保存处理后的图片。最后,使用imagedestroy()函数释放内存。

2.生成缩略图处理
生成缩略图是为了节省带宽和提高页面加载速度,通常会将大尺寸的图片生成小尺寸的缩略图。在PHP中,我们同样可以使用GD库来实现生成缩略图的功能。下面是一个简单的示例代码:

<?php
// 打开原始图片
$srcImg = imagecreatefromjpeg('original.jpg');

// 获取原始图片的尺寸
$srcImgWidth = imagesx($srcImg);
$srcImgHeight = imagesy($srcImg);

// 指定缩略图的尺寸
$thumbWidth = 200;
$thumbHeight = $srcImgHeight * $thumbWidth / $srcImgWidth;

// 创建缩略图
$thumbImg = imagecreatetruecolor($thumbWidth, $thumbHeight);

// 将原始图片复制到缩略图上
imagecopyresampled($thumbImg, $srcImg, 0, 0, 0, 0, $thumbWidth, $thumbHeight, $srcImgWidth, $srcImgHeight);

// 保存缩略图
imagejpeg($thumbImg, 'thumbnail.jpg');

// 释放内存
imagedestroy($srcImg);
imagedestroy($thumbImg);
?>

在以上示例代码中,首先通过imagecreatefromjpeg()函数打开原始图片,并使用imagesx()imagesy()函数获取图片的宽度和高度。然后,通过指定缩略图的尺寸,例如将缩略图的宽度固定为200px,根据原始图片的宽高比例计算出缩略图的高度。接着,通过imagecreatetruecolor()函数创建一个指定尺寸的缩略图。最后,通过imagecopyresampled()函数将原始图片复制到缩略图上,并使用imagejpeg()

2. Générer un traitement de vignettes

La génération de vignettes permet d'économiser de la bande passante et d'améliorer la vitesse de chargement des pages. Les images de grande taille sont généralement générées dans des vignettes de petite taille. En PHP, on peut également utiliser la bibliothèque GD pour réaliser la fonction de génération de vignettes. Voici un exemple de code simple :
rrreee

Dans l'exemple de code ci-dessus, ouvrez d'abord l'image originale via la fonction imagecreatefromjpeg() et utilisez imagesx() et La fonction imagesy() récupère la largeur et la hauteur de l'image. Ensuite, en spécifiant la taille de la vignette, par exemple en fixant la largeur de la vignette à 200 px, la hauteur de la vignette est calculée en fonction du rapport hauteur/largeur de l'image d'origine. Ensuite, créez une vignette de la taille spécifiée via la fonction imagecreatetruecolor(). Enfin, l'image originale est copiée dans la vignette via la fonction imagecopyresampled(), et la vignette est enregistrée à l'aide de la fonction imagejpeg(). 🎜🎜Conclusion🎜Dans le développement PHP, le besoin de traiter des images est très courant. En utilisant la bibliothèque GD de PHP, nous pouvons facilement implémenter des fonctions de filigrane et de vignette d'image. Cet article présente comment utiliser la bibliothèque GD pour implémenter des filigranes d'images et générer des vignettes. Nous espérons fournir une aide aux développeurs lors du traitement des images. 🎜

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