Heim  >  Artikel  >  Backend-Entwicklung  >  Kapselungsklasse zum Hinzufügen, Komprimieren und Ausschneiden von PHP-Bildwasserzeichen

Kapselungsklasse zum Hinzufügen, Komprimieren und Ausschneiden von PHP-Bildwasserzeichen

韦小宝
韦小宝Original
2017-12-05 08:56:431536Durchsuche

 php arbeitet mit Bilddateien hauptsächlich unter Verwendung der GD-Bibliothekserweiterung. Wenn wir häufig php zum Betreiben von Bildern verwenden, kapseln wir natürlich viele Funktionen, sonst schreiben wir zu viel wiederholten Code. Wenn es viele Funktionen im Zusammenhang mit Bildern gibt, können wir darüber nachdenken, diese php-Funktionen auszusortieren, sodass wir die Idee haben, sie in Klassen zu kapseln. Dann schauen wir uns unten an, wie es verpackt ist!

Es gibt vier Hauptschritte zur Bedienung eines Bildes:

  1. Öffnen Sie das Bild

  2. Operationsbild

  3. Ausgabebild

  4. Bild zerstören

Die Schritte 1, 3 und 4 müssen jedes Mal geschrieben werden und sind jedes Mal fast gleich. Der einzige Schritt, der wirklich geändert werden muss, ist der Bildbearbeitungsschritt. Die Bearbeitung von Bildern erfolgt häufig über eine oder mehrere GD-Hauptfunktionen.

Die vier Methoden in der Kapselungsklasse dieses Artikels sind Textwasserzeichen (imagettftext()), Bildwasserzeichen (imagecopymerge()), Bildkomprimierung und Bildausschnitt (imagecopyresampled()). Funktionen sind nicht Wiederholen. Geben Sie den Code direkt ein:


<?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);
     }

 } ?>


Das Obige ist der gesamte Inhalt dieses Artikels. Wenn Sie andere Vorgänge benötigen, gehen Sie einfach zu dieser Klasse Fügen Sie es einfach hinein~~

Verwandte Empfehlungen:

Detailliertes Tutorial zur Verwendung der GD-Bibliothek zum Abschluss der Bestätigungscode-Effekt in PHP

Wie öffne ich die GD-Bibliothek in PHP?

php Verwenden Sie die GD-Bibliothek, um hochwertigen Miniaturbild-Beispielcode zu generieren

Das obige ist der detaillierte Inhalt vonKapselungsklasse zum Hinzufügen, Komprimieren und Ausschneiden von PHP-Bildwasserzeichen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn