网页显示function  imageUpdateSize这一行有错,但我实在不知道错在哪里,求大牛指教。代码如下:
/**
*等比缩放函数(以保存的方式实现)
*@param string $picname 被缩放的处理图片源
*@param int $maxx 缩放后图片的最大宽度
*@param int $maxy 缩放后图片的最大高度
*@param string $pre 缩放后图片名的前缀名
*@return string 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
*/
function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
$info = getimageSize($picname);//获取图片的基本信息

$w = $info[0];//获取宽度
$h = $info[1];//获取高度

//获取图片的类型并为此创建对应图片资源
switch($info[2]){
case 1://gif
$im = imagecreatefromgif($picname);
break;
case 2://jpg
$im = imagecreatefromjpeg($picname);
break;
case 3://png
$im = imagecreatefrompng($picname);
default:
die("图片类型错误!");
}
//计算缩放比例
if(($maxx/$w)>($maxy/$h)){
$b = $maxy/$h;
}else{
$b = $maxx/$w;
}
//计算出缩放后的尺寸
$nw = floor($w*$b);
$nh = floor($h*$b);

//创建一个新的图像源(目标图像)
$nim = imagecreatetruecolor($nw,$nh);

//执行等比缩放
imagecopyresampled($nim,$sim,0,0,0,0,$nw,$nh,$w,$h);

//输出图像(根据源图像的类型,输出为对应的类型)
$picinfo = pathinfo($picname);//解析源图像的名字和路径信息
$newpicname = $picinfo["dirname"]."/".$pre.$picinfo["basename"];
switch($info[2]){
case 1:
imagegif($nim,$newpicname);
break;
case 2:
imagejpeg($nim,$newpicname);
break;
case 3:
imagepng($nim,$newpicname);
break;
}
//释放图片资源
imagedestroy($im);
imagedestroy($nim);
//返回结果
return $newpicname;
}

解决方案 »

  1.   

    直接用这个类就可以了。
    http://blog.csdn.net/fdipzone/article/details/9316385
      

  2.   

    出错行之前就已经有错了吧。所以才定位到function imageUpdateSize 出错我执行过你的方法,是不能生成缩略图的,因为$sim这个没有定义。
    改成这样就可以了<?php
    imageUpdateSize('1.jpg');/**
    *等比缩放函数(以保存的方式实现)
    *@param string $picname 被缩放的处理图片源
    *@param int $maxx 缩放后图片的最大宽度
    *@param int $maxy 缩放后图片的最大高度
    *@param string $pre 缩放后图片名的前缀名
    *@return string 返回后的图片名称(带路径),如a.jpg=>s_a.jpg
    */  
    function imageUpdateSize($picname,$maxx=100,$maxy=100,$pre="s_"){
    $info = getimageSize($picname);//获取图片的基本信息$w = $info[0];//获取宽度
    $h = $info[1];//获取高度//获取图片的类型并为此创建对应图片资源
    switch($info[2]){
    case 1://gif
    $sim = imagecreatefromgif($picname);
    break;
    case 2://jpg
    $sim = imagecreatefromjpeg($picname);
    break;
    case 3://png
    $sim = imagecreatefrompng($picname);
    default:
    die("图片类型错误!");
    }   
    //计算缩放比例
    if(($maxx/$w)>($maxy/$h)){
    $b = $maxy/$h;
    }else{
    $b = $maxx/$w;
    }
    //计算出缩放后的尺寸
    $nw = floor($w*$b);
    $nh = floor($h*$b);//创建一个新的图像源(目标图像)
    $nim = imagecreatetruecolor($nw,$nh);//执行等比缩放
    imagecopyresampled($nim,$sim,0,0,0,0,$nw,$nh,$w,$h);//输出图像(根据源图像的类型,输出为对应的类型)
    $picinfo = pathinfo($picname);//解析源图像的名字和路径信息
    $newpicname = $picinfo["dirname"]."/".$pre.$picinfo["basename"];
    switch($info[2]){
    case 1:
    imagegif($nim,$newpicname);
    break;
    case 2:
    imagejpeg($nim,$newpicname);
    break;
    case 3:
    imagepng($nim,$newpicname);
    break;
    }
    //释放图片资源
    imagedestroy($sim);
    imagedestroy($nim);
    //返回结果
    return $newpicname;
    }
    ?>