首页 > php图像处理 > php 上传图片并按比例生成指定大小图

php 上传图片并按比例生成指定大小图

这是一款图象缩略函数,把上传的新图片给$srcfile然后进行文件按$thumbwidth 缩小图宽最大尺寸与$thumbheitht 缩小图高最大尺寸,生成小图.

图象缩略函数,参数说明:

$srcfile 原图地址; $dir  新图目录 $thumbwidth 缩小图宽最大尺寸 $thumbheitht 缩小图高最大尺寸 $ratio 默认等比例缩放 为1是缩小到固定尺寸.

php 上传图片并按比例生成指定大小图实例代码如下:

<?php
function makethumb($srcfile, $dir, $thumbwidth, $thumbheight, $ratio = 0) {
    //判断文件是否存在
    if (!file_exists($srcfile)) return false;
    //生成新的同名文件,但目录不同
    $imgname = explode('/', $srcfile);
    $arrcount = count($imgname);
    $dstfile = $dir . $imgname[$arrcount - 1];
    //缩略图大小
    $tow = $thumbwidth;
    $toh = $thumbheight;
    if ($tow < 40) $tow = 40;
    if ($toh < 45) $toh = 45;
    //获取图片信息
    $im = '';
    if ($data = getimagesize($srcfile)) {
        if ($data[2] == 1) {
            $make_max = 0; //gif不处理
            if (function_exists("imagecreatefromgif")) {
                $im = imagecreatefromgif($srcfile);
            }
        } elseif ($data[2] == 2) {
            if (function_exists("imagecreatefromjpeg")) {
                $im = imagecreatefromjpeg($srcfile);
            }
        } elseif ($data[2] == 3) {
            if (function_exists("imagecreatefrompng")) {
                $im = imagecreatefrompng($srcfile);
            }
        }
    }
    if (!$im) return '';
    $srcw = imagesx($im);
    $srch = imagesy($im);
    $towh = $tow / $toh;
    $srcwh = $srcw / $srch;
    if ($towh <= $srcwh) {
        $ftow = $tow;
        $ftoh = $ftow * ($srch / $srcw);
    } else {
        $ftoh = $toh;
        $ftow = $ftoh * ($srcw / $srch);
    }
    if ($ratio) {
        $ftow = $tow;
        $ftoh = $toh;
    }
    //缩小图片
    if ($srcw > $tow || $srch > $toh || $ratio) {
        if (function_exists("imagecreatetruecolor") && function_exists("imagecopyresampled") && @$ni = imagecreatetruecolor($ftow, $ftoh)) {
            imagecopyresampled($ni, $im, 0, 0, 0, 0, $ftow, $ftoh, $srcw, $srch);
        } elseif (function_exists("imagecreate") && function_exists("imagecopyresized") && @$ni = imagecreate($ftow, $ftoh)) {
            imagecopyresized($ni, $im, 0, 0, 0, 0, $ftow, $ftoh, $srcw, $srch);
        } else {
            return '';
        }
        if (function_exists('imagejpeg')) {
            imagejpeg($ni, $dstfile);
        } elseif (function_exists('imagepng')) {
            imagepng($ni, $dstfile);
        }
    } else {
        //小于尺寸直接复制
        copy($srcfile, $dstfile);
    }
    imagedestroy($im);
    if (!file_exists($dstfile)) {
        return '';
    } else {
        return $dstfile;
    }
}


本文地址:http://www.phprm.com/tuxiang/fs4472.html

转载随意,但请附上文章地址:-)

标签:php上传图片 php图片指定大小

相关文章

发表留言