zoukankan      html  css  js  c++  java
  • PHP等比例生成缩略图

    /**
    	* 生成缩略图
    	* $imgSrc			图片源路径
    	* $resize_width		图片宽度
    	* $resize_height	图片高度
    	* $dstimg			缩略图路径
    	* $isCut			是否剪切图片
    	*/
    	public function reSizeImg($imgSrc, $resize_width, $resize_height, $dstimg, $isCut = false) {
            //图片的类型
            $type = substr(strrchr($imgSrc, "."), 1);
            //初始化图象
            if ($type == "jpg" || $type == "jpeg") {
                $im = imagecreatefromjpeg($imgSrc);
            }
            if ($type == "gif") {
                $im = imagecreatefromgif($imgSrc);
            }
            if ($type == "png") {
                $im = imagecreatefrompng($imgSrc);
            }
     
            $width = imagesx($im);
            $height = imagesy($im);
     
            //生成图象
            //改变后的图象的比例
            $resize_ratio = ($resize_width) / ($resize_height);
            //实际图象的比例
            $ratio = ($width) / ($height);
            if (($isCut) == 1) {
                if ($ratio >= $resize_ratio) { 
    				//高度优先
                    $newimg = imagecreatetruecolor($resize_width, $resize_height);
                    imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, (($height) * $resize_ratio), $height);
                    ImageJpeg($newimg, $dstimg);
                }
                if ($ratio < $resize_ratio) { 
    				//宽度优先
                    $newimg = imagecreatetruecolor($resize_width, $resize_height);
                    imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, $resize_height, $width, (($width) / $resize_ratio));
                    ImageJpeg($newimg, $dstimg);
                }
            } else {
                if ($ratio >= $resize_ratio) {
                    $newimg = imagecreatetruecolor($resize_width, ($resize_width) / $ratio);
                    imagecopyresampled($newimg, $im, 0, 0, 0, 0, $resize_width, ($resize_width) / $ratio, $width, $height);
                    ImageJpeg($newimg, $dstimg);
                }
                if ($ratio < $resize_ratio) {
                    $newimg = imagecreatetruecolor(($resize_height) * $ratio, $resize_height);
                    imagecopyresampled($newimg, $im, 0, 0, 0, 0, ($resize_height) * $ratio, $resize_height, $width, $height);
                    ImageJpeg($newimg, $dstimg);
                }
            }
            ImageDestroy($im);
        }
    

      

  • 相关阅读:
    UVa12093
    UVa1631
    vue路由跳转的三种方式
    vue中的钩子函数(判断是否跳转页面)beforeEach
    vue中子组件向父组件传值方法?
    vue中对数组,对象的操作如下
    vue-router的beforeEach的使用?
    vue拦截器使用?
    vue中父子组件以及兄弟组件的传值情况?
    前端模块化?
  • 原文地址:https://www.cnblogs.com/lovekingly/p/8656703.html
Copyright © 2011-2022 走看看