Heim > Artikel > Backend-Entwicklung > So erstellen Sie eine Klasse in PHP, die Wasserzeichen hinzufügen und Miniaturansichten generieren kann
Dieses Mal zeige ich Ihnen, wie Sie eine Klasse in PHP erstellen, die Wasserzeichen hinzufügen und Miniaturansichten generieren kann. PHP kann eine Klasse erstellen, die Wasserzeichen hinzufügen und Miniaturansichten generieren kann Was sind das? Hier sind tatsächliche Fälle.
ImageTool.class.php
<?php class ImageTool { private $imagePath;//图片路径 private $outputDir;//输出文件夹 private $memoryImg;//内存图像 public function construct($imagePath, $outputDir = null) { $this->imagePath = $imagePath; $this->outputDir = $outputDir; $this->memoryImg = null; } /** * 显示内存中的图片 * @param $image */ public function showImage() { if ($this->memoryImg != null) { $info = getimagesize($this->imagePath); $type = image_type_to_extension($info[2], false); header('Content-type:' . $info['mime']); $funs = "image{$type}"; $funs($this->memoryImg); imagedestroy($this->memoryImg); $this->memoryImg = null; } } /**将图片以文件形式保存 * @param $image */ private function saveImage($image) { $info = getimagesize($this->imagePath); $type = image_type_to_extension($info[2], false); $funs = "image{$type}"; if (empty($this->outputDir)) { $funs($image, md5($this->imagePath) . '.' . $type); } else { $funs($image, $this->outputDir . md5($this->imagePath) . '.' . $type); } } /** * 压缩图片 * @param $width 压缩后宽度 * @param $height 压缩后高度 * @param bool $output 是否输出文件 * @return resource */ public function compressImage($width, $height, $output = false) { $image = null; $info = getimagesize($this->imagePath); $type = image_type_to_extension($info[2], false); $fun = "imagecreatefrom{$type}"; $image = $fun($this->imagePath); $thumbnail = imagecreatetruecolor($width, $height); imagecopyresampled($thumbnail, $image, 0, 0, 0, 0, $width, $height, $info[0], $info[1]); imagedestroy($image); if ($output) { $this->saveImage($thumbnail); } $this->memoryImg = $thumbnail; return $this; } /** * 为图像添加文字标记 * * @param $content 文本内容 * @param $size 字体大小 * @param $font 字体样式 * @param bool $output 是否输出文件 * @return $this */ public function addTextmark($content, $size, $font, $output = false) { $info = getimagesize($this->imagePath); $type = image_type_to_extension($info[2], false); $fun = "imagecreatefrom{$type}"; $image = $fun($this->imagePath); $color = imagecolorallocatealpha($image, 0, 0, 0, 80); $posX = imagesx($image) - strlen($content) * $size / 2; $posY = imagesy($image) - $size / 1.5; imagettftext($image, $size, 0, $posX, $posY, $color, $font, $content); if ($output) { $this->saveImage($image); } $this->memoryImg = $image; return $this; } /** * 为图片添加水印 * * @param $watermark 水印图片路径 * @param $alpha 水印透明度(0-100) * @param bool $output 是否输出文件 * @return $this */ public function addWatermark($watermark, $alpha, $output = false) { $image_info = getimagesize($this->imagePath); $image_type = image_type_to_extension($image_info[2], false); $image_fun = "imagecreatefrom{$image_type}"; $image = $image_fun($this->imagePath); $mark_info = getimagesize($watermark); $mark_type = image_type_to_extension($mark_info[2], false); $mark_fun = "imagecreatefrom{$mark_type}"; $mark = $mark_fun($watermark); $posX = imagesx($image) - imagesx($mark); $posY = imagesy($image) - imagesy($mark); imagecopymerge($image, $mark, $posX, $posY, 0, 0, $mark_info[0], $mark_info[1], $alpha); if ($output) { $this->saveImage($image); } $this->memoryImg = $image; return $this; } }
ImageTool verwendet
Importieren Sie zuerst das ImageTool-Tool:require_once 'ImageTool.class.php';und instanziieren Sie dann das ImageTool-Objekt:
$imageTool = new ImageTool('img/oppman.jpeg', 'out/');//图片路径、输出文件夹
1. Generieren Sie komprimierte Bilder
$imageTool->compressImage(350, 250, true);//压缩宽度、压缩高度、是否保存 $imageTool->showImage();
2. Textwasserzeichen hinzufügen
$imageTool->addTextmark('一拳超人', 50, 'res/micro.ttf', true);//内容、尺寸、字体、是否保存 $imageTool->showImage();3. Bild hinzufügen
Wasserzeichen$imageTool->addWatermark('res/logo.jpeg', 100, true);//水印路径、透明度、是否保存
$imageTool->showImage();
Wird nur als temporäre Bildausgabe verwendet:
$imageTool->addTextmark('快捷输出', 50, 'res/micro.ttf')->showImage();Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Für weitere spannende Informationen zahlen Sie bitte Beachten Sie auch andere verwandte Artikel auf der chinesischen PHP-Website! Empfohlene Lektüre:
Detaillierte Erläuterung der Schritte zur Implementierung der MongoDB-Singleton-Modus-Betriebsklasse in PHP
tp5 (denken Sie an PHP5 ) Betrieb der MongoDB-Datenbank Detaillierte Erläuterung der Schritte
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Klasse in PHP, die Wasserzeichen hinzufügen und Miniaturansichten generieren kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!