2018年04月6日网站服务器迁移完成……

PHP图片上传,预览图上传,水印设置

php 苏 demo 1524℃ 0评论
<?php
//设置图片的存放目录 设置水印的存放地址如果愿意,可以给预览图、上传图片分设不同的存储地址
  $img_path = $_SERVER[‘DOCUMENT_ROOT’].”/data/imgupload/”.date(Ym).”/”;
  $water_path = $_SERVER[‘DOCUMENT_ROOT’].’/data/public_img/water.png’;
  //mkdir只能创建最后的那层文件夹,所以别指望能直接创造一个几层深的新目录
  if(!file_exists( $img_path)){
 mkdir($img_path);
  }
  //设置可以上传的图片类型
  $upType_valid = array(‘jpg’,’png’,’gif’,’bmp’,’jpeg’,’JPG’,’tif’,’tiff’);
  
  if(isset($_POST) and $_SERVER[‘REQUEST_METHOD’]==’POST’){
      //img_upload是input file的name,不是id
 $fileName = $_FILES[‘img_upload’][‘name’];
 $fileSize = $_FILES[‘img_upload’][‘size’];
  }
  if(strlen($fileName)){
 list($txt,$ext) = explode(‘.’, $fileName);
  }
  
  if(!in_array( $ext, $upType_valid)){
 echo(‘此类型不可上传’);
 exit;
  }
  //设置图片名称,预览图片名称,上传的临时图片名称。
  $final_img_name = time().’.’.$ext;
  $final_pre_img_name = ‘pre’.time().’.’.$ext;
  $tmp_name = $_FILES[‘img_upload’][‘tmp_name’];
  
 
  $pre_maxWidth = 500;
  $pre_maxHeight = 700;
  $img_size = getimagesize($tmp_name);
  $img_width = $img_size[0];
  $img_height = $img_size[1];
  //$WH_radio_true是实际的图片长宽比 W=width H=height radio是比率
  $WH_radio_true = $img_height/ $img_width;
  $WH_radio_advance = $pre_maxHeight/ $pre_maxWidth;
  if($WH_radio_true < $WH_radio_advance && $img_width > $pre_maxWidth){
 $pre_width = $pre_maxWidth;
 $radio_height = $pre_maxWidth / $img_width;
 $pre_height = $img_height * $radio_height;
  } else
  if($WH_radio_true > $WH_radio_advance && $img_height > $pre_height){
 $pre_height = $pre_maxHeight;
 $radio_width = $img_height / $pre_maxHeight;
 $pre_width = $img_width * $radio_width;
  } else{
 $pre_width = $img_width;
 $pre_height = $img_height;
  }
  //创建预览图,设置图的长宽备用
  $preImg = imagecreatetruecolor($pre_width, $pre_height);
    
  move_uploaded_file($tmp_name, $img_path.$final_img_name);
  
  //用上传好的图片创建预览图的图形内容.因为不确定上传的图片类型,所以需要先做图片类型判断
  //判断图片具体类型,好为后续的预览图生成功能做前置判断
  $img_ext = getimagesize($img_path.$final_img_name);
  switch($img_ext[2]){
 case 1:
   $pre_copyImg = imagecreatefromgif($img_path.$final_img_name);
   break;
 case 2:
   $pre_copyImg = imagecreatefromjpeg($img_path.$final_img_name);
   break;
 case 3:
   $pre_copyImg = imagecreatefrompng($img_path.$final_img_name);
   break;
 case 6:
   $pre_copyImg = imagecreatefromwbmp($img_path.$final_img_name);
   break;
 case 7:
//    $pre_copyImg = imagecreatefromtif($img_path.$final_img_name);
        echo(‘暂不支持tif格式的预览图’);
        break;
  }
   
  //制作初步的缩略图,此句完成对图片的缩小,后续在缩小以后的图片上添加水印   
  imagecopyresampled($preImg, $pre_copyImg,0,0,0,0, $pre_width, $pre_height, $img_width, $img_height);
  
 
  $water_img = imagecreatefrompng($water_path);
  $water_size = getimagesize($water_path);
  $water_w = $water_size[0];
  $water_h = $water_size[1];
  //设置水印模式为右下:计算横坐标和纵坐标的偏移量,可以switch设置一个水印的位置标签,控制水印分处不同位置
  $water_x = $pre_width – $water_w;
  $water_y = $pre_height – $water_h;
  //设置预览图的混色模式
  imagealphablending($preImg,true);
  //给预览图添加水印
  imagecopy($preImg, $water_img, $water_x, $water_y,0,0, $water_w, $water_h);
  
  //生成预览图并且存到相关目录中
  imagejpeg($preImg,$img_path.$final_pre_img_name);
?>
打赏

转载请注明:苏demo的别样人生 » PHP图片上传,预览图上传,水印设置

   如果本篇文章对您有帮助,欢迎向博主进行赞助,赞助时请写上您的用户名。
支付宝直接捐助帐号oracle_lee@qq.com 感谢支持!
喜欢 (0)or分享 (0)
发表我的评论
取消评论
表情