设为首页 收藏本站
查看: 495|回复: 0

[经验分享] PHP生成高清晰缩略图

[复制链接]
累计签到:12 天
连续签到:1 天
发表于 2015-8-29 09:58:16 | 显示全部楼层 |阅读模式
  区别:

  imagecopyresized 生成一般缩略图
  imagecopyresampled 生成高清缩略图
  
  
  class image
  {
    var $src                 = '';            //原图片地址
    var $dst                 = '';            //目标图片标示
    var $dst_file             = '';              //目标图片文件地址
    var $dst_width             = 0;            //目标最大宽度
    var $dst_height         = 0;            //目标最大高度
    var $mode                 = 0;              //是否显示(0显示,1不显示)
    var $exe                = '';           //配置新的文件名例如源文件名是:mm.jpg 可以将其配置成plmm.jpg/gg_mm.jpg
    function resize_image($src,$dst_width,$dst_height,$exe='',$mode = 0)
    {
        $this->src          = $src;
        $this->dst_width    = $dst_width;
        $this->dst_height   = $dst_height;
        $this->exe          = $exe;
        $this->mode         = $mode;
        $width              = $this->get_msg($this->src,0);
        $height             = $this->get_msg($this->src,1);
        $src_h              = $this->get_msg($this->src,2);//return:resouse 返回图象标示符
        $size               = $this->resize($this->src,$this->dst_width,$this->dst_height);
  
     $this->dst          = @imagecreatetruecolor($dst_width,$dst_height);
  
        //$bool    =imagecopyresized($this->dst,$src_h, 0, 0, 0, 0,140,105, $width, $height); //生成一般缩略图
  $bool    =imagecopyresampled($this->dst,$src_h, 0, 0, 0, 0,$dst_width,$dst_height, $width, $height); //生成高清缩略图
  //$new_file           = $this->exe.basename($this->src);
//$new_file   ='smll'.basename($this->src);
  $new_file   =basename($this->src);
  
        if($bool)
        {
  
            if(isset($mode) && $mode == 0)
            {
   
                    switch ($this->get_msg($src,3))
                    {
                    case 1:
                        return imagegif($this->dst);
                        break;
                    case 2:
                        return imagejpeg($this->dst);
                        break;
                    case 3:
                        return imagepng($this->dst);
                        break;
                    }
            }
            else
            {
   
                switch ($this->get_msg($src,3))
                    {
                    case 1:
                        return imagegif($this->dst,$new_file);
                        break;
                    case 2:
                        return imagejpeg($this->dst,$new_file);
                        break;
                    case 3:
                        return imagepng($this->dst,$new_file);
                        break;
                    }
            }   
        }
        else
        {
            echo "拷贝图象并调整大小过程出错啦~";
        }
    }
    /* $src  源图片的地址
     * $fetch 获取类型  0 获取image width 1 获取image height 2 获取image 3获取type
    */
   
    function get_msg($src, $fetch = 0)
    {
        $data = @getimagesize($src);
        switch ($fetch)
        {
            case 0:
                $width = $data[0];
                return $width;
                break;
            case 1:
                $height = $data[1];
                return $height;
                break;
            case 2:
                switch ($data[2])
                {
                    case 1:
                        $dst = imagecreatefromgif($src);
                        return $dst;
                        break;
                    case 2:
                        $dst = imagecreatefromjpeg($src);
                        return $dst;
                        break;
                    case 3:
                        $dst = imagecreatefrompng($src);
                        return $dst;
                        break;
                }
            case 3:
                return $data[2];
                break;
               
        }
    }
    function resize($src,$dst_width,$dst_height)
    {
        $this->src             = $src;
        $this->dst_width     = $dst_width;
        $this->dst_height     = $dst_height;
        $width                 = $this->get_msg($src,0);
        $height             = $this->get_msg($src,1);
        if($this->dst_width && $width > $this->dst_width )
        {
            $resize_width     = 1;
            $width_ratio      = $this->dst_width/$width;
        }
        if($this->dst_height && $height > $this->dst_height)
        {
            $resize_height     = 1;
            $height_ratio  = $this->dst_height/$height;
        }
        if($resize_height && $resize_width)
        {
            //宽度优先
            if($width_ratio < $height_ratio)
            {
                $size[x] = $width * $width_ratio;
                $size[y] = $height * $width_ratio;
                return $size;   
            }
            //高度优先
            else
            {
                $size[x] = $width * $height_ratio;
                $size[y] = $height * $height_ratio;
                return $size;
            }   
        }
        elseif($resize_height)
        {
            $size[x] = $width;
            $size[y] = $height * $height_ratio;
            return $size;
        }
        elseif($resize_width)
        {
            $size[x] = $width * $width_ratio;
            $size[y] = $height;
            return $size;
        }
    }
}
  $img=new image;
$img->resize_image('原图片路径',140,105,'',1);
?>

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-105794-1-1.html 上篇帖子: JAVA 和PHP 比较 下篇帖子: php 随机数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表