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:
Öffnen Sie das Bild
Operationsbild
Ausgabebild
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:
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!