2010-12-08 45 views
0

je reçois le message d'erreur suivant lorsque d'un script que je utilise pour créer une miniaturefonction imagepng ne fonctionne pas tout à fait

Attention: imagepng() [function.imagepng]: Impossible d'ouvrir « Manga/One Piece/asd/Miniature » pour l'écriture: est un répertoire /homez.380/mangasma/www/mangaUpload.php en ligne 220

des thats la ligne provoquant l'erreur

imagepng($dst_img,$dir); 

et est la méthode ici

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

La partie où les autorisations sur le dossier sont correctes mais n'écrit toujours pas. – dbomb101

+2

le message d'erreur implique que vous spécifiez un répertoire dans lequel vous devez spécifier un nom de fichier PNG complet –

+0

merci pour cet homme – dbomb101

Répondre

3

$dir ne doit pas être un dossier, mais un chemin vers un fichier (par exemple: $dir = 'Manga/One Piece/asd/Thumbnail/1.png';)

Par exemple, juste avant imagepng($dst_img,$dir); (et imagegif et imagejpeg), vous pouvez ajouter une ligne:

$dir .= '/test.png'; 

Lorsque vous utilisez une fonction, vous pouvez/devez transmettre le nom de fichier de sortie en tant que paramètre