php-缩略图-水印-图片处理类-1212
来源:互联网 发布:工程计量与计价算法 编辑:程序博客网 时间:2024/04/28 23:47
01.php
<?php/****燕十八 公益PHP讲堂论 坛: http://www.zixue.it微 博: http://weibo.com/YshibaYY频道: 88354001****//***====笔记部分====图像复制(水印)图像半透明提制图像的按比例复制(缩略)***//*bool imagecopy ( resource $dst_im , resource $src_im , int $dst_x , int $dst_y , int $src_x , int $src_y , int $src_w , int $src_h )*//**把一幅小图复制到大图上,复制2份,形成证件照片的效果小图:330*379大图的宽 330*2+20, 高 379**/$sw = 330; // 小图的宽$sh = 379; // 小图的高// 创建大图的画面$big = imagecreatetruecolor($sw*2+20,$sh);// 创建灰色$gray = imagecolorallocate($big,200,200,200);// 填充大图imagefill($big,0,0,$gray);// 再读小图$small = imagecreatefrompng('./feng.png');// 复制小图imagecopy($big,$small,0,0,0,0,330,379);imagecopy($big,$small,$sw+20,0,0,0,330,379);// 输出header('content-type: image/png;');imagepng($big);// 销毁imagedestroy($im);
02.php
<?php/****燕十八 公益PHP讲堂论 坛: http://www.zixue.it微 博: http://weibo.com/YshibaYY频道: 88354001****//***====笔记部分====问:复制的图片能否小一点呢?复制的图片能否带点透明效果呢?答:能imagecopyresampledimagecopymerge***//*bool imagecopyresampled ( resource $dst_image , resource $src_image , int $dst_x , int $dst_y , int $src_x , int $src_y , int $dst_w , int $dst_h , int $src_w , int $src_h )复制图片并允许调整大小(可以做缩略图)*/$ow = 330; // 原图宽度$oh = 379; // 原图高度$nw = (int)$ow/2; // 缩略宽度$nh = (int)$oh/2; // 缩略高度// 创建缩略图画面$dst = imagecreatetruecolor($nw,$nh);// 读取原始图$src = imagecreatefrompng('./feng.png');// 复制完毕imagecopyresampled($dst,$src,0,0,0,0,$nw,$nh,$ow,$oh);// 输出imagepng($dst,'./smallfeng.png');imagedestroy($dst);
03.php
<?php/****燕十八 公益PHP讲堂论 坛: http://www.zixue.it微 博: http://weibo.com/YshibaYY频道: 88354001****//***====笔记部分====透明复制bool 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 )***/// 读取大图$dst = imagecreatefromjpeg('home.jpg');// 读取小图$src = imagecreatefrompng('smallfeng.png');imagealphablending ( $src , true);imagealphablending ( $dst , true);imagecopymerge($dst,$src,410,63,0,0,165,189,40);echo imagejpeg($dst,'./ad.jpeg')?'OK':'FAIL';
04.php
<?php/****燕十八 公益PHP讲堂论 坛: http://www.zixue.it微 博: http://weibo.com/YshibaYY频道: 88354001****//**如何知道图片的大小和类型因为在缩略图,不知道大小,我们无法确定比例不知道类型,我们无法确认调用的函数,如 imagecreatefrompng/jpeg...之前的学习 我们是人为的读出图片的宽和高又通过后缀知道了类型,相当于宽高,类型是已知的我们既然准备写一个图片处理类,要处理的图片是各种大小,各种类型都可能的,如何知道大小及功能???引出一个重要函数 getimagesize()**/$arr = getimagesize('./feng.png');//print_r($arr);echo '你是',image_type_to_mime_type($arr[2]),'类型';$arr = getimagesize('./home.jpg');echo '你是',image_type_to_mime_type($arr[2]),'类型';print_r($arr);$arr = getimagesize('./01.php');var_dump($arr);/*Array( [0] => 330 宽 [1] => 379 高 [2] => 3 图片类型(根据这个参数,知道该调用imagecreatefrompng/jpeg/gif) [3] => width="330" height="379" [bits] => 8 [mime] => image/png)*/
05.php
<?php/****燕十八 公益PHP讲堂论 坛: http://www.zixue.it微 博: http://weibo.com/YshibaYY频道: 88354001****//***想操作图片先得把图片的大小,类型信息得到水印:就是把指定的水印复制到目标上,并加透明效果缩略图:就是把大图片复制到小尺寸画面上***/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; } /* 加水印功能 parm String $dst 等操作图片 parm String $water 水印小图 parm String $save,不填则默认替换原始图 */ public static function water($dst,$water,$save=NULL,$pos=2,$alpha=50) { // 先保证2个图片存在 if(!file_exists($dst) || !file_exists($water)) { return false; } // 首先保证水印不能比待操作图片还大 $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 3: // 左下角 $posx = 0; $posy = $dinfo['height'] - $winfo['height']; break; default: $posx = $dinfo['width'] - $winfo['width']; $posy = $dinfo['height'] - $winfo['height']; } // 加水印 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 = (int)($width - $dwidth) / 2; $paddingy = (int)($height - $dheight) / 2; imagecopyresampled($tim,$dim,$paddingx,$paddingy,0,0,$dwidth,$dheight,$dinfo['width'],$dinfo['height']); // 保存图片 if(!$save) { $save = $dst; unlink($dst); } $createfunc = 'image' . $dinfo['ext']; $createfunc($tim,$save); imagedestroy($dim); imagedestroy($tim); return true; }}// print_r(ImageTool::imageInfo('./home.jpg'));/*echo ImageTool::water('./home.jpg','./smallfeng.png','home1.jpg',0)?'OK':'FAIL';echo ImageTool::water('./home.jpg','./smallfeng.png','home2.jpg',1)?'OK':'FAIL';echo ImageTool::water('./home.jpg','./smallfeng.png','home3.jpg',2)?'OK':'FAIL';echo ImageTool::water('./home.jpg','./smallfeng.png','home4.jpg',3)?'OK':'FAIL';*/echo ImageTool::thumb('./feng.png','./feng1.png',200,200)?'OK':'FAIL';echo ImageTool::thumb('./feng.png','./feng2.png',200,300)?'OK':'FAIL';echo ImageTool::thumb('./feng.png','./feng3.png',300,200)?'OK':'FAIL';
0 0
- php-缩略图-水印-图片处理类-1212
- php之图片处理类缩略图加水印
- PHP图片处理函数:水印、缩略图
- 【PHP】图片操作类 - 水印、缩略图
- php图片类(水印和缩略图)
- PHP 文字水印,缩略图,图片水印实现类
- php图片水印与缩略图
- PHP图片处理函数 类 (水印图,缩略图)[关于等比例压缩与裁剪压缩]
- PHP图像处理函数:文字水印,图片水印,缩略图(等比缩放)
- 图片通用上传文件类(处理水印,缩略图)
- .net上传图片的处理类库(缩略图、水印)
- 图片通用上传文件类(处理水印,缩略图)
- asp.net 上传图片处理 水印 缩略图
- C# 添加水印图片、文字、缩略图处理
- php缩略图,打水印类
- php图片处理类之缩放水印
- php 图片操作类,支持生成缩略图,添加水印,上传缩略图
- PHP提取第一张图片+生成缩略图+图片添加水印
- 颜色混合opengl--glBlendFunc函数
- UVA 1146 - Now or later(2-SET)
- 22 Intent启动各种资源(源自 黑马程序员)
- Hibernate对自定义类型UserType的用法
- ios-使用NSJSONSerialization解析JSON文件
- php-缩略图-水印-图片处理类-1212
- C#中加载C/C++dll报错
- static类成员
- uva 1151 - Buy or Build poj 2784 Buy or Build(最小生成树)
- android TextView中UrlSpan与文本中的超链接冲突问题
- WebService 学习笔记之 集成Spring和Web容器
- C++ 迭代器删除remove/erase
- 编辑距离
- 老鸟的Python入门教程