Imagepng功能不太合适

时间:2010-12-08 14:48:52

标签: php gd

我从用于创建缩略图的脚本

时收到以下错误消息

警告:imagepng()[function.imagepng]:无法打开'Manga / One Piece / asd / Thumbnail'进行写入:第220行/homez.380/mangasma/www/mangaUpload.php中的目录< / p>

导致错误的行

imagepng($dst_img,$dir);

这是方法

function createthumb($source,$output,$new_w,$new_h)
{
    $dirpos=strrpos($output,"/");
    $dir= substr($output,0,$dirpos);
    if(!file_exists($dir))
    {
        mkdir($dir);
        chmod($dir,0775);
    }else
    {
        chmod($dir,0775);
    }
    $ext=explode(".",$source);
    $ext=$ext[count($ext)-1];
    $ext=strtolower($ext);

if (preg_match("/jpg|jpeg/",$ext)){$src_img=imagecreatefromjpeg($source);}
    if (preg_match("/png/",$ext)){$src_img=imagecreatefrompng($source);}
    if (preg_match("/gif/",$ext)){$src_img=imagecreatefromgif($source);}

    echo $src_img;

    $old_x=imageSX($src_img);
    $old_y=imageSY($src_img);
    if ($old_x > $old_y) 
    {
        $thumb_w=$new_w;
        $thumb_h=$old_y*($new_h/$old_x);
    }
if ($old_x < $old_y) 
    {
        $thumb_w=$old_x*($new_w/$old_y);
        $thumb_h=$new_h;
    }
    if ($old_x == $old_y) 
    {
        $thumb_w=$new_w;
        $thumb_h=$new_h;
    }
    $dst_img=ImageCreateTrueColor($thumb_w,$thumb_h);
    imagecopyresampled($dst_img,$src_img,0,0,0,0,$thumb_w,$thumb_h,$old_x,$old_y);

    if (preg_match("/png/",$ext))
    {   
        imagepng($dst_img,$dir);
    }
elseif (preg_match("/gif/",$ext))
    {
        imagegif($dst_img,$dir); 
    } elseif (preg_match("/jpg|jpeg/",$ext)) {
        imagejpeg($dst_img,$dir); 
    }
    imagedestroy($dst_img); 
    imagedestroy($src_img);
    return array("w"=>$thumb_w,"h"=>$thumb_h);
}

1 个答案:

答案 0 :(得分:3)

$dir不应该是文件夹,而是文件的路径(即:$dir = 'Manga/One Piece/asd/Thumbnail/1.png';

例如,在imagepng($dst_img,$dir);(以及imagegifimagejpeg)之前,您可以添加一行:

$dir .= '/test.png';

当您使用某个函数时,您可以/应该将输出文件名作为参数传递