Maison  >  Article  >  développement back-end  >  Classe d'encapsulation pour ajouter, compresser et couper des filigranes d'images PHP

Classe d'encapsulation pour ajouter, compresser et couper des filigranes d'images PHP

韦小宝
韦小宝original
2017-12-05 08:56:431537parcourir

 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 :

  1. Ouvrir l'image

  2. Image d'opération

  3. Image de sortie

  4. 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 :

Tutoriel détaillé sur la façon d'utiliser la bibliothèque GD pour compléter le effet de code de vérification en PHP

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!

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