图片处理类 只有简单的水印缩略功能 手累

本文介绍了一种图片处理类库,提供了获取图片信息、添加水印及生成缩略图等功能。通过动态加载函数,支持多种图片格式,并能根据需求调整水印位置及透明度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

调试花时间
/*
想操作图片  先得到图片大小 类型信息
水印:就是把指定的水印复制到目标上 并加透明效果
      imagecopymerge — 拷贝并合并图像的一部分 最后的参数是透明读
缩略图:就是把大图复制到小尺寸画面上 
      imagecopyresampled — 重采样拷贝部分图像并调整大小
*/
class ImageTool{
   public static function imageInfo($image){
   	      //imageInfo 分析图片信息
   	      //return array()
          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){
    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;
    }  
     //动态加载函数 读两张图的后缀
    $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  缩略图:就是把大图复制到小尺寸画面上 imagecopyresampled     
   public static function thumb($dst,$save,$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; 
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值