找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 267|回复: 0
打印 上一主题 下一主题

PHP批量生成图片缩略图的方法

[复制链接]

2647

主题

2647

帖子

7881

积分

论坛元老

Rank: 8Rank: 8

积分
7881
跳转到指定楼层
楼主
发表于 2018-2-14 05:45:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

            本文实例讲述了PHP批量生成图片缩略图的方法。分享给大家供大家参考。具体如下:
dir=$olddir ? $olddir : "./images/temp";
   $this->newdir=$newdir ? $newdir : "./images/s";
  }
  function reNames($src)
  {
   $md5file=substr(md5($src),10,10).strrchr($src,".");
   //MD5文件名后(例如:3293okoe.gif)
   $md5file=$this->w."_".$this->h."_".$md5file;
   //处理后文件名
   return $this->newdir."/".$md5file;
   //将源图片,MD5文件名后保存到新的目录里
  }
  function Mini($src,$w,$h,$q=80)
  //生成缩略图 Mini(图片地址, 宽度, 高度, 质量)
  {
   $this->src=$src;
   $this->w=$w;
   $this->h=$h;
   if(strrchr($src,".")==".gif" && $this->regif==0)
   //是否处理GIF图
   {
    return $this->src;
   }
   if($this->keep==0) //是否保留源文件,默认不保留
   {
    $newsrc=$this->reNames($src); //改名后的文件地址
   }
   else     //保持原名
   {
    $src=str_replace("\\","/",$src);
    $newsrc=$this->newdir.strrchr($src,"/");
   }
   if(file_exists($newsrc) && $this->over==0)
   //如果已存在,直接返回地址
   {
    return $newsrc;
   }
   if(strstr($src,"http://") && !strstr($src,$_SERVER['HTTP_HOST']))
   //如果是网络文件,先保存
   {
    $src=$this->getimg($src);
   }
   $arr=getimagesize($src); //获取图片属性
   $width=$arr[0];
   $height=$arr[1];
   $type=$arr[2];
   switch($type)
   {
    case 1:  //1 = GIF,
     $im=imagecreatefromgif($src);
     break;
    case 2:  //2 = JPG
     $im=imagecreatefromjpeg($src);
     break;
    case 3:  //3 = PNG
     $im=imagecreatefrompng($src);
     break;
    default:
     return 0;
   }
   //处理缩略图
   $nim=imagecreatetruecolor($w,$h);
   $k1=round($h/$w,2);
   $k2=round($height/$width,2);
   if($k1newdir))
   {
    mkdir($this->newdir);
   }
   switch($type)  //保存图片
   {
    case 1:
     $rs=imagegif($nim,$newsrc);
     break;
    case 2:
     $rs=imagejpeg($nim,$newsrc,$q);
     break;
    case 3:
     $rs=imagepng($nim,$newsrc);
     break;
    default:
     return 0;
   }
   return $newsrc; //返回处理后路径
  }
  function getimg($filename)
  {
   $md5file=$this->dir."/".substr(md5($filename),10,10).strrchr($filename,".");
   if(file_exists($md5file))
   {
    return $md5file;
   }
   //开始获取文件,并返回新路径
   $($filename);
   if($img)
   {
    if(!is_dir($this->dir))
    {
     mkdir($this->dir);
    }
    savefile($md5file,$img);
    return $md5file;
   }
  }
  function reImg($src,$w,$h,$q)
  //转换缩略图(文件名和结构不变)
  {
   $this->keep=1;
   return $this->Mini($src,$w,$h,$q);
   //return 生成的地址
  }
}
$image=new image();
echo $image->reImg("images/zht.jpg",75,75,80);
echo "
";
echo $image->reImg("images/m8920.jpg",75,75,80);
echo "
";
echo $image->getimg("./images/s/zht.jpg");
?>
希望本文所述对大家的php程序设计有所帮助。
            
            
您可能感兴趣的文章:
  • PHP用GD库生成高质量的缩略图片
  • php图片的裁剪与缩放生成符合需求的缩略图
  • 基于PHP服务端图片生成缩略图的方法详解
  • 使用gd库实现php服务端图片裁剪和生成缩略图功能分享
  • php实现上传图片生成缩略图示例
  • jquery+php+ajax显示上传进度的多图片上传并生成缩略图代码
  • php实现按指定大小等比缩放生成上传图片缩略图的方法
  • 基于GD2图形库的PHP生成图片缩略图类代码分享
  • 使用PHP生成图片的缩略图的方法
  • php上传图片生成缩略图(GD库)
  • PHP Imagick完美实现图片裁切、生成缩略图、添加水印
  • php实现图片上传并利用ImageMagick生成缩略图
  • php生成图片缩略图功能示例
            
  • 分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    用户反馈
    客户端