<?php$image = new image();$image->water('./upload/up_5cf0caca0565b.png','./upload/up_5cf0cb3a61fae.jpg',9);class image{ //路径 protected $path; //是否启用随机名字 protected姚雪曼 $israndname; //要保存的图像类型 protected $type; //通过构造方法对成员属性进行初始化 function __construct($path = './', $israndname = true, $type = 'png') { $this->path = $path; $this->israndname = $israndname; $this->type = $type; } /** * 对外公开的水印方法 * * @param [type] $image 原图片 * @param [type] $water 水印图片 * @param [type] $postion 水印图片的位置 * @param integer $tmd 水印图片的透明度 * @param string $prefix 图片的前缀 * @return void */ function water($image, $water, $postion, $tmd = 100, $prefix = 'water_') { //1、判断这两个图片是否存在 if ((!file_exists($image)) || (!file_exists($water))) { die('图片资源不存在'); } //2、得到原图片的宽度和高度以及水印图片的宽带和高度 $imageinfo = lf::getimageinfo($image); $waterinfo = lf::getimageinfo($water); //3、判断水印图片能否贴上来 if (!$this->checkimage($imageinfo, $waterinfo)) { exit('水印图片太大'); } //4、打开图片 $imageres = lf::openanyimage($image); $waterres = lf::openanyimage($water); //5、根据水印图片的位置计算水印图片的坐标 $pos = $this->getpostion($postion, $imageinfo, $waterinfo); //6、将水印图片贴过来 imagecopymerge($imageres, $waterres, $pos['x'], $pos['y'], 0, 0, $waterinfo['width'], $waterinfo['height'], $tmd); //7、得到要保存图片的文件名 $newname = $this->createnewname($image, $prefix); //8、得到保存图片的路径,也就是文件的全路径 $newpath = rtrim($this->path, '/') . '/' . $newname; //9、保存图片 $this->saveimage($imageres, $newpath); //10、销毁资源 imagedestroy($imageres); imagedestroy($waterres); return $newpath; } /** * 保存图像资源函数 * * @param [type] $imageres * @param [type] $newpath * @return void */ protected function saveimage($imageres, $newpath) { //imagepng imagegif imagewbmp $func = 'image' . $this->type; //通过变量函数进行保存 $func($imageres, $newpath); } /** * 得到文件名函数 * * @param [type] $imagepath * @param [type] $prefix * @return void */ protected function createnewname($imagepath, $prefix) { if ($this->israndname) { $name = $prefix . uniqid() . '.' . $this->type; } el { $name = $prefix . pathinfo($imagepath)['filename'] . '.' . $this->type; } return $name; } 罗纳尔多迪尼奥 /** * 根据位置计算水印图片的坐标 * * @param [type] $postion * @par短篇伤感爱情故事am [type] $imageinfo * @param [type] $waterinfo * @return void */ protected function getpostion($postion, $imageinfo, $waterinfo) { switch ($postion) { ca 1: $x = 0; $y = 0; break; ca 2: $x = ($imageinfo['width'] - $waterinfo['width']) / 2; $y = 0; break; ca 3: $x = $imageinfo['width'] - $waterinfo['width']; $y = 0; break; ca 4: $x = 0; $y = ($imageinfo['height'] - $waterinfo['height']) / 2;; break; ca 5: $x = ($imageinfo['width'] - $waterinfo['width']) / 2; $y = ($imageinfo['height'] - $waterinfo['height']) / 2; break; ca 6: $x = $imageinfo['width'] - $waterinfo['width']; $y = ($imageinfo['height'] - $waterinfo['height']) / 2; break; ca 7: $x 家乡的美景= 0; $y = $imageinfo['height'] - $waterinfo['height']; break; ca 8: $x = ($imageinfo['width'] - $waterinfo['width']) / 2; $y = $imageinfo['height'] - $waterinfo['height']; break; ca 9: $x = $imageinfo['width'] - $waterinfo['width']; $y = $imageinfo['height'] - $waterinfo['height']; break; ca 0: $x = mt_rand(0, ($imageinfo['width'] - $waterinfo['width'])); $y = mt_rand(0, ($imageinfo['height'] - $waterinfo['height'])); break; } return ['x' => $x, 'y' => $y]; } /** * 判断水印图片是否大于原图片 * * @param [type] $imageinfo * @param [type] $waterinfo * @return void */ protected function checkimage($imageinfo, $waterinfo) { if (($waterinfo['width'] > $imageinfo['width']) || ($waterinfo['height'] > $imageinfo['height'])) { return fal; } return true; } /** * 静态方法,根据图片的路径得到图片信息,宽度、高度、mime类型 * * @param [type] $imagepath * @return void */ static function getimageinfo($imagepath) { //得到图片信息 $info = getimagesize($imagepath); //保存图片宽度 $data['width'] = $info[0]; //保存图片高度 $data['height'] = $info[1]; //保存图片mime类型 $data['mime'] = $info['mime']; //将图片信息返回 return $data; } /** * 根据图片类型打开任意图片 * * @param [type] $imagepath * @return void */ static function openanyimage($imagepath) { //得到图片的mime类型 $mime = lf::getimageinfo($imagepath)['mime']; //根据不同的mime类型来使用不同的函数进行打开图片 switch ($mime) { ca 'image/png': $image = imagecreatefrompng($imagepath); break; ca 'image/gif': $image = imagecreatefromoffer的用法gif($imagepath); break; ca 'image/jpeg': $image = imagecreatefromjpeg($imagepath); break; ca 'image/wbmp': $image = imagecreatefromwbmp($imagepath); break; } return $image; }}
本文发布于:2023-04-06 21:31:57,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/afd791e8d3a2ee4e8bde73014a2430bf.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:PHP学习之图像处理.doc
本文 PDF 下载地址:PHP学习之图像处理.pdf
留言与评论(共有 0 条评论) |