Maison > Article > développement back-end > Classe d'encapsulation pour ajouter, compresser et couper des filigranes d'images PHP
php fonctionne sur les fichiers image principalement en utilisant l'extension de la bibliothèque GD. Lorsque nous utilisons fréquemment php pour faire fonctionner des images, nous encapsulerons naturellement de nombreuses fonctions, sinon nous écrirons trop de code répété. Lorsqu'il y a de nombreuses fonctions liées aux images, on peut envisager de trier ces fonctions php, on a donc l'idée de les encapsuler dans des classes. Voyons ensuite comment il est emballé ci-dessous !
Il y a quatre étapes principales pour utiliser une image :
Ouvrir l'image
Image d'opération
Image de sortie
Détruire l'image
Les étapes 1, 3 et 4 doivent être écrites à chaque fois, et elles sont presque les mêmes à chaque fois. La seule étape qui doit vraiment être modifiée est l’étape de manipulation d’image. La manipulation des images se fait souvent via une ou plusieurs fonctions principales de GD.
Les quatre méthodes de la classe d'encapsulation de cet article sont le filigrane de texte (imagettftext()), le filigrane d'image (imagecopymerge()), la compression d'image et la découpe d'image (imagecopyresampled()). les fonctions ne sont pas répétées. Entrez directement le code :
<?php class Image { private $info; private $image; public $type; public function construct($src) { $this->info=getimagesize($src); $this->type=image_type_to_extension($this->info['2'],false); $fun="imagecreatefrom{$this->type}"; $this->image=$fun($src); } /** * 文字水印 * @param [type] $font 字体 * @param [type] $content 内容 * @param [type] $size 文字大小 * @param [type] $col 文字颜色(四元数组) * @param array $location 位置 * @param integer $angle 倾斜角度 * @return [type] */ public function fontMark($font,$content,$size,$col,$location,$angle=0){ $col=imagecolorallocatealpha($this->image, $col['0'], $col['1'], $col['2'],$col['3']); imagettftext($this->image, $size, $angle, $location['0'], $location['1'], $col,$font,$content); } /** * 图片水印 * @param [type] $imageMark 水印图片地址 * @param [type] $dst 水印图片在原图片中的位置 * @param [type] $pct 透明度 * @return [type] */ public function imageMark($imageMark,$dst,$pct){ $info2=getimagesize($imageMark); $type=image_type_to_extension($info2['2'],false); $func2="imagecreatefrom".$type; $water=$func2($imageMark); imagecopymerge($this->image, $water, $dst[0], $dst[1], 0, 0, $info2['0'], $info2['1'], $pct); imagedestroy($water); } /** * 压缩图片 * @param [type] $thumbSize 压缩图片大小 * @return [type] [description] */ public function thumb($thumbSize){ $imageThumb=imagecreatetruecolor($thumbSize[0], $thumbSize[1]); imagecopyresampled($imageThumb, $this->image, 0, 0, 0, 0, $thumbSize[0], $thumbSize[1], $this->info['0'], $this->info['1']); imagedestroy($this->image); $this->image=$imageThumb; } /** * 裁剪图片 * @param [type] $cutSize 裁剪大小 * @param [type] $location 裁剪位置 * @return [type] [description] */ public function cut($cutSize,$location){ $imageCut=imagecreatetruecolor($cutSize[0],$cutSize[1]); imagecopyresampled($imageCut, $this->image, 0, 0, $location[0], $location[1],$cutSize[0],$cutSize[1],$cutSize[0],$cutSize[1]); imagedestroy($this->image); $this->image=$imageCut; } /** * 展现图片 * @return [type] [description] */ public function show(){ header("content-type:".$this->info['mime']); $funn="image".$this->type; $funn($this->image); } /** * 保存图片 * @param [type] $newname 新图片名 * @return [type] [description] */ public function save($newname){ header("content-type:".$this->info['mime']); $funn="image".$this->type; $funn($this->image,$newname.'.'.$this->type); } public function destruct(){ imagedestroy($this->image); } } ?>
Ce qui précède est tout le contenu de cet article. Si vous avez besoin d'autres opérations, allez-y. à cette classe Ajoutez-le simplement à l'intérieur~~
Recommandations associées :
Comment ouvrir la bibliothèque GD en php ?
php Utilisez la bibliothèque GD pour générer un exemple de code d'image miniature de haute qualité
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!