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);
        }
    

      

  • 相关阅读:
    POJ 3630 Phone List | Trie 树
    POJ 3974 Palindrome | 马拉车模板
    POJ 3422 Kaka's Matrix Travels | 最小费用最大流
    POJ 2195 Going Home | 带权二分图匹配
    POJ 3068 "Shortest" pair of paths | 最小费用最大流
    POJ 3686 The Windy's | 最小费用最大流
    洛谷 最小费用最大流 模板 P3381
    POJ 2987 Firing | 最大权闭合团
    POJ 3469 Dual Core CPU | 最小割
    POJ 3281 Dining | 最大流
  • 原文地址:https://www.cnblogs.com/lovekingly/p/8656703.html
Copyright © 2011-2022 走看看