php之图片处理类缩略图加水印
来源:互联网 发布:mac个人收藏添加桌面 编辑:程序博客网 时间:2024/06/06 21:41
用到两个image系统函数
imagecopymerge — 拷贝并合并图像的一部分
imagecopyresampled — 重采样拷贝部分图像并调整大小
/*如何知道图片的大小和类型无法确认调用函数:Imagecreatefrompng/jpeg……可以独处图片的宽和高相当于宽高是已知的一个重要的函数getimagesize()*//*想操作图片先把图片的大小,类型信息得到水印:就是把指定的水印复制到目标上,并加透明效果缩略图:就是把大图片复制到小尺寸画面上*/class ImageTool{//imageinfo分析图片的信息//return array()public static function imageInfo($image){//判断图片是否存在if(!file_exists($image)){return false;}$info = getimagesize($image);if($info == false){return false;}//此时info分析出来是一个数组$img['width'] = $info[0];$img['height'] = $info[1];//分析图片的后缀$img['ext'] = substr($info['mime'],strpos($info['mime'],'/')+1);return $img;} /*加水印string $dst 待操作图片 $water 水印小图 $save 不填,则默认替换原始图 $alpha 透明度 $pos 水印图放的位置1234,顺时针*/public static function water($dst,$water,$save=NULL,$pos=2,$alpha=50){//先保证两个图片存在if(!file_exists($dst) || !file_exists($water)){return false;}//1.保证水印不能比待操作图片还大$dinfo = self::imageInfo($dst);$winfo = self::imageInfo($water);//判断 if($winfo['height'] > $dinfo['height'] || $winfo['width'] > $dinfo['width']){return false;}//两张图,读到画布上,但是图片可能是png,可能是jpeg,用什么函数来读$dfunc = 'imagecreatefrom' .$dinfo['ext'];$wfunc = 'imagecreatefrom' .$winfo['ext'];if(!function_exists($dfunc) || !function_exists($wfunc)){return false;}//动态加载函数来创建画布$dim = $dfunc($dst); //创建待操作的画布$wim = $wfunc($water); //创建水印画布//根据水印的位置,计算粘贴的坐标switch($pos){case 0; //左上角$posx = 0;$posy = 0;break;case 1; //右上角$posx = $dinfo['width'] - $winfo['width'];$posy = 0;break;case 2; //左下角$posx = 0;$posy = $dinfo['height'] - $winfo['height'];break;default: //默认右下角$posx = $dinfo['width'] - $winfo['width'];$posy = $dinfo['height'] - $winfo['height'];}//加水印 在什么位置?// imagecopymerge ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h , int $pct )imagecopymerge($dim,$wim,$posx,$posy,0,0,$winfo['width'],$winfo['height'],$alpha);if(!$save){$save=$dst;unlink($dst); //删除原图}//保存图片$createfunc = 'image' . $dinfo['ext'];$createfunc($dim,$save);//销毁图片imagedestroy($dim);imagedestroy($wim);return true;}/*thumb 生成缩略图等比例缩放,两边留白*/public static function thumb($dst,$save=NULL,$width=200,$height=200){//首先判断待处理的图片是否存在$dinfo = self::imageInfo($dst);if($dinfo == false){return false;}//计算缩放比例$calc = min($width/$dinfo['width'],$height/$dinfo['height']);//创建原始图的画布$dfunc = 'imagecreatefrom'.$dinfo['ext'];$dim = $dfunc($dst);//创建缩略图画布$tim = imagecreatetruecolor($width,$height);//创建白色填充缩略图画布$white = imagecolorallocate($tim,255,255,255);//填充缩略画布imagefill($tim,0,0,$white);//复制并缩略$dwidth = (int)$dinfo['width']*$calc;$dheight = (int)$dinfo['height']*$calc;$paddingx = ($width - $dwidth) / 2;$paddingy = ($height - $dheight) /2;imagecopyresampled($tim,$dim,$paddingx,$paddingy,0,0,$dwidth,$dheight,$dinfo['width'],$dinfo['height']);//保存图片if(!$save){$save = $dst;unlink($dst);}$createfun = 'image'.$dinfo['ext'];$createfun($tim,$save);imagedestroy($dim);imagedestroy($tim);return true;}
调用传参:
//调用传参 加水印echo ImageTool::water('原图片地址','加水印图片地址','生成图片')?'ok':false;
//调用 缩略图echo ImageTool::thumb('原图地址','生成图片地址',200,200)?'ok':false;
- php之图片处理类缩略图加水印
- php-缩略图-水印-图片处理类-1212
- php 加水印,缩略图
- PHP图片处理函数:水印、缩略图
- PHP制作图片缩略图、加水印、加字体
- php生成缩略图,加水印类
- PHP图像处理--MagicWand生成缩略图(可加水印)
- PHP图像处理--MagicWand生成缩略图(可加水印)
- php图片处理类之缩放水印
- 生成缩略图,加文字水印,图片水印
- 【PHP】图片操作类 - 水印、缩略图
- php图片类(水印和缩略图)
- PHP的GD函数库图形类函数(创建缩略图、给图片加水印、给图片加文字、画布划线)
- PHP 文字水印,缩略图,图片水印实现类
- 图片缩放 图片加水印 php类
- php图片加水印
- php图片水印与缩略图
- C#图片上传,加水印,自动生成缩略图类
- 雅虎历任CEO的错误
- 后台运行
- 设计模式.笔记.6大原则
- SiteMesh实战
- 3个QTI循迹的策略图
- php之图片处理类缩略图加水印
- 移动互联网创业:美国不代表全球
- error: no matching function for call to 'std::basic_ifstream<char>::open(std::string&)
- 12.9 训练 E - Ternary Password
- js的pretty print
- linux GCC命令
- 细说Cookie
- keil MDK中如何生成*.bin格式的文件
- 小米手机的录音文件位置