家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


Php Gd2 上传图片/文字水印/图片水印/等比例缩略图/源代码


作者:chinaddv.com    点击: 读取中...

引用代码: <?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);
}
?>

收藏此文章     打印  更新     编辑此文章    『关闭窗口』