Php Gd2 上传图片/文字水印/图片水印/等比例缩略图/源代码
<?php /****************************************************************************** 使用说明: 1. 将PHP.INI文件里面的"extension=php_gd2.dll"一行前面的;号去掉,因为我们要用到GD库; 2. 将extension_dir =改为你的php_gd2.dll所在目录;php4.6.0以上版本使用默认路径 ******************************************************************************/ //上传文件类型列表 $uptypes=array( 'image/jpg', 'image/jpeg', 'image/png', 'image/pjpeg', 'image/gif', 'image/bmp', 'image/x-png' ); $max_file_size = 10240000; //上传文件大小限制, 单位BYTE $path_im = "prod_img/"; //生成大图保存文件夹路径 $path_sim = "prod_simg/"; //缩略图保存文件夹路径 $watermark = 1; //是否加水印(1为加水印,其他为不加水印); $watertype = 2; //水印类型(1为文字,2为图片) $waterstring = "http://www.5x54.com/"; //水印字符串 $waterimg = "logo.gif"; //水印图片文件路径 $waterclearly = 100; //水印透明度0-100版权保护,请不要随意复制^%#$32471)98sa。^_^,数字小透明高 $imclearly = 100; //图片清晰度0-100版权保护,请不要随意复制^%#$32471)98sa。^_^,数字越大越清晰版权保护,请不要随意复制^%#$32471)98sa。^_^,文件尺寸越大 $simclearly = 75; //缩略图清晰度0-100版权保护,请不要随意复制^%#$32471)98sa。^_^,数字越大越清晰版权保护,请不要随意复制^%#$32471)98sa。^_^,文件尺寸越大 $smallmark = 1; //是否生成缩略图(1为加生成,其他为不); $dst_sw = 120; //定义缩略图宽度版权保护,请不要随意复制^%#$32471)98sa。^_^,高度我采用等比例缩放版权保护,请不要随意复制^%#$32471)98sa。^_^,所以只要比较宽度就可以了 ?> <form enctype="multipart/form-data" method="post" name="upform"> 上传文件: <input name="upfile" type="file"> <input type="submit" value="上传"><br> 允许上传的文件类型为:<?=implode(',',$uptypes)?> </form> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { if (!is_uploaded_file($_FILES["upfile"][tmp_name])) //是否存在文件 { echo "图片不存在!"; exit; } $file = $_FILES["upfile"]; if($max_file_size < $file["size"]) //检查文件大小 { $max_file_size = $max_file_size/1000; echo "文件太大版权保护,请不要随意复制^%#$32471)98sa。^_^,超过 ".$max_file_size." KB!"; exit; } if(!in_array($file["type"],$uptypes)) //检查文件类型 { echo "文件类型不符!".$file["type"]; exit; } if(!file_exists($path_im)) //检查上传目录是否存在版权保护,请不要随意复制^%#$32471)98sa。^_^,不存在创建 { mkdir($path_im); } if(!file_exists($path_sim)) //检查缩略图目录是否存在版权保护,请不要随意复制^%#$32471)98sa。^_^,不存在创建 { mkdir($path_sim); } $filename = $file["tmp_name"]; $im_size = getimagesize($filename); $src_w = $im_size[0]; $src_h = $im_size[1]; $src_type = $im_size[2]; $pinfo = pathinfo($file["name"]); $filetype = $pinfo['extension']; $all_path = $path_im.time().".".$filetype; //路径+文件名,目前以上传时间命名 if (file_exists($all_path)) { echo "同名文件已经存在了"; exit; } if(!move_uploaded_file ($filename,$all_path)) { echo "移动文件出错"; exit; } $pinfo = pathinfo($all_path); $fname = $pinfo[basename]; echo "<font color=red>已经成功上传</font><br>文件名: <font color=blue>".$all_path."</font><br>"; echo "宽度:".$src_w."px "; echo "长度:".$src_h."px "; echo "<br> 大小:".$file["size"]." bytes"; switch($src_type)//判断源图片文件类型 { case 1://gif $src_im = imagecreatefromgif($all_path);//从源图片文件取得图像 break; case 2://jpg $src_im = imagecreatefromjpeg($all_path); break; case 3://png $src_im = imagecreatefrompng($all_path); break; //case 6: //$src_im=imagecreatefromwbmp($all_path); //break; default: die("不支持的文件类型"); exit; } if($watermark == 1) { //$iinfo = getimagesize($all_path,$iinfo); $dst_im = imagecreatetruecolor($src_w,$src_h); //根据原图尺寸创建一个相同大小的真彩色位图 $white = imagecolorallocate($dst_im,255,255,255);//白 //给新图填充背景色 $black = imagecolorallocate($dst_im,0,0,0);//黑 $red = imagecolorallocate($dst_im,255,0,0);//红 $orange = imagecolorallocate($dst_im,255,85,0);//橙 imagefill($dst_im,0,0,$white); imagecopymerge($dst_im,$src_im,0,0,0,0,$src_w,$src_h,100);//原图图像写入新建真彩位图中 //imagefilledrectangle($dst_im,1,$src_h-15,80,$src_h,$white); switch($watertype) { case 1: //加水印字符串 imagestring($dst_im,5,5,$src_h-20,$waterstring,$orange);//文字水印版权保护,请不要随意复制^%#$32471)98sa。^_^,字体5号颜色橙色版权保护,请不要随意复制^%#$32471)98sa。^_^,位于背景图左下角 break; case 2: //加水印图片 $lim_size = getimagesize($waterimg); //取得水印图像尺寸版权保护,请不要随意复制^%#$32471)98sa。^_^,信息 switch($lim_size[2]) //判断水印图片文件类型 { case 1://gif $src_lim = imagecreatefromgif($waterimg); //取得水印图像 break; case 2://jpg $src_lim = imagecreatefromjpeg($waterimg); break; case 3://png $src_lim = imagecreatefrompng($waterimg); break; //case 6: //$src_im=imagecreatefromwbmp($waterimg); //break; default: die("不支持的文件类型"); exit; } $src_lw = ($src_w-$lim_size[0]); //水印Width定位 $src_lh = ($src_h-$lim_size[1]); //水印height定位 /*参考位置 switch($waterPos) { case 0://随机 $src_lw = rand(0,($src_w - $lim_size[0])); $src_lh = rand(0,($src_h - $lim_size[1])); break; case 1://1为顶端居左 $src_lw = 0; $src_lh = 0; break; case 2://2为顶端居中 $src_lw = ($src_w - $lim_size[0]) / 2; $src_lh = 0; break; case 3://3为顶端居右 $src_lw = $src_w - $lim_size[0]; $src_lh = 0; break; case 4://4为中部居左 $src_lw = 0; $src_lh = ($src_h - $lim_size[1]) / 2; break; case 5://5为中部居中 $src_lw = ($src_w - $lim_size[0]) / 2; $src_lh = ($src_h - $lim_size[1]) / 2; break; case 6://6为中部居右 $src_lw = $src_w - $lim_size[0]; $src_lh = ($src_h - $lim_size[1]) / 2; break; case 7://7为底端居左 $src_lw = 0; $src_lh = $src_h - $lim_size[1]; break; case 8://8为底端居中 $src_lw = ($src_w - $lim_size[0]) / 2; $src_lh = $src_h - $lim_size[1]; break; case 9://9为底端居右 $src_lw = $src_w - $lim_size[0]; $src_lh = $src_h - $lim_size[1]; break; default://随机 $src_lw = rand(0,($src_w - $lim_size[0])); $src_lh = rand(0,($src_h - $lim_size[1])); break; } */ imagecopymerge($dst_im,$src_lim,$src_lw,$src_lh,0,0,$lim_size[0],$lim_size [1],$waterclearly);//合并两个图像版权保护,请不要随意复制^%#$32471)98sa。^_^,设置水印透明度$waterclearly imagedestroy($src_lim); break; } switch($src_type) { case 1: imagegif($dst_im,$all_path,$imclearly);//生成gif文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; case 2: imagejpeg($dst_im,$all_path,$imclearly);//生成jpg文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; case 3: imagepng($dst_im,$all_path,$imclearly);//生成png文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; //case 6: //imagewbmp($dst_im,$all_path); break; } //释放缓存 imagedestroy($dst_im); } if($smallmark == 1) { $sall_path = $path_sim.time().".".$filetype; if (file_exists($sall_path)) { echo "同名文件已经存在了"; exit; } if($src_w <= $dst_sw) // 原图尺寸 <= 缩略图尺寸 { $dst_sim = imagecreatetruecolor($src_w,$src_h); //新建缩略图真彩位图 imagecopymerge($dst_sim,$src_im,0,0,0,0,$src_w,$src_h,100); //原图图像写入新建真彩位图中 } if($src_w > $dst_sw) // 原图尺寸 > 缩略图尺寸 { $dst_sh = $dst_sw/$src_w*$src_h; $dst_sim = imagecreatetruecolor($dst_sw,$dst_sh); //新建缩略图真彩位图(等比例缩小原图尺寸) imagecopyresampled($dst_sim,$src_im,0,0,0,0,$dst_sw,$dst_sh,$src_w,$src_h); //原图图像写入新建真彩位图中 } switch($src_type) { case 1: imagegif($dst_sim,$sall_path,$simclearly);//生成gif文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; case 2: imagejpeg($dst_sim,$sall_path,$simclearly);//生成jpg文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; case 3: imagepng($dst_sim,$sall_path,$simclearly);//生成png文件版权保护,请不要随意复制^%#$32471)98sa。^_^,图片清晰度0-100 break; //case 6: //imagewbmp($dst_sim,$sall_path); break; } //释放缓存 imagedestroy($dst_sim); } //释放缓存 imagedestroy($src_im); } ?>
收藏此文章 打印 更新 编辑此文章 『关闭窗口』