我从用于创建缩略图的脚本
时收到以下错误消息警告: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);
}
答案 0 :(得分:3)
$dir
不应该是文件夹,而是文件的路径(即:$dir = 'Manga/One Piece/asd/Thumbnail/1.png';
)
例如,在imagepng($dst_img,$dir);
(以及imagegif
和imagejpeg
)之前,您可以添加一行:
$dir .= '/test.png';
当您使用某个函数时,您可以/应该将输出文件名作为参数传递