Home > Article > Backend Development > PHP implements image processing tools that can add watermarks and generate thumbnails_php skills
This article mainly introduces PHP to implement image processing tools that can add watermarks and generate thumbnails. It involves PHP's related operating skills for image display, saving, compression, watermarks, etc. Friends in need can refer to the following
The example of this article describes the PHP implementation of an image processing tool class that can add watermarks and generate thumbnails. Share it with everyone for your reference, the details are as follows:
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 usage
First import the ImageTool tool:
require_once 'ImageTool.class.php';
Then instantiate ImageTool Object:
$imageTool = new ImageTool('img/oppman.jpeg', 'out/');//图片路径、输出文件夹
1. Generate compressed pictures
$imageTool->compressImage(350, 250, true);//压缩宽度、压缩高度、是否保存 $imageTool->showImage();
2. Add text watermark
$imageTool->addTextmark('一拳超人', 50, 'res/micro.ttf', true);//内容、尺寸、字体、是否保存 $imageTool->showImage();
3. Add image watermark
$imageTool->addWatermark('res/logo.jpeg', 100, true);//水印路径、透明度、是否保存 $imageTool->showImage();##Only as a temporary image output:
$imageTool->addTextmark('快捷输出', 50, 'res/micro.ttf')->showImage();
PS: Here are some more practical image processing tools recommended for your reference:
Online image cropping/generation tool:
http://tools.jb51.net/aideddesign/imgcut
Online image BASE64 conversion tool:
http://tools.jb51.net/transcoding/img2base64
ICO icon online generation tool:
http://tools.jb51.net/aideddesign/ico_img
Online Email Icon Making Tool:
http://tools. jb51.net/email/mailillogo
Online image format conversion (jpg/bmp/gif/png) tool:
http://tools.jb51 .net/aideddesign/picext
##Articles you may be interested in:
Explanation on how to print binary trees in zigzag order with PHPExplanation of the method of obtaining the binary tree image with PHPExplanation of the method of obtaining the Kth node from the last in the linked list with PHPThe above is the detailed content of PHP implements image processing tools that can add watermarks and generate thumbnails_php skills. For more information, please follow other related articles on the PHP Chinese website!