2009-04-07 6 views
0

Je dois prendre une séquence d'images en entrée d'un dossier et après le redimensionnement, l'image redimensionnée doit être stockée dans un dossier de sortie. J'ai écrit du code. Mais dans mon code après le redimensionnement de l'image, le dossier de sortie n'a qu'une image noire.Prendre une entrée image du dossier et après le redimensionner le stocker dans un dossier de sortie

Pour déboguer ce code, veuillez créer le dossier de sortie & et mettre une image gif dans le dossier d'entrée et voir la sortie dans le dossier de sortie. S'il vous plaît aider.

<?php 
$dir = opendir("input/"); 
$i = 0; 
while ($imgfile = readdir($dir)) 
    { 
    if ($imgfile != "." && $imgfile != "..") 
     { 
     $imgarray[$i] = $imgfile; 
     $newwidth  = 240; //new width 
     $newheight = 320; //new height 
     $uploadedfile = $imgarray[$i]; 
     $src   = imagecreatefromgif($uploadedfile); 
     list($width, $height) = getimagesize($uploadedfile); 
     $tmp = imagecreatetruecolor($newwidth, $newheight); 
     imagecopyresampled($tmp, $src, 0, 0, 0, 0, $newwidth, $newheight, $width, $height); 
     $filename = "output/" . $imgarray[$i]; 
     imagegif($tmp, $filename, 100); 
     imagedestroy($src); 
     imagedestroy($tmp); 
     $i++; 
     } 
    } 
closedir($dir); 
?> 

Répondre

2

Votre erreur est dans cette ligne:

$uploadedfile = $imgarray[$i]; 

Vos images sont dans le dossier d'entrée, mais cela est de fixer la variable juste le nom de l'image, de sorte que lorsque vous essayez d'appeler imagecreatefromgif et getimagesize il ne trouve pas d'image, ce qui entraîne la sortie noire que vous obtenez. Pour corriger, il suffit d'ajouter le bon répertoire avant le nom:

$uploadedfile = "input/" . $imgarray[$i]; 

Testé avec cette modification et cela fonctionne.

Comme une note de côté, j'ai pu rapidement trouver ce qui était erroné avec votre code en ayant error_reporting sur:

error_reporting(E_ALL); 
ini_set('display_errors', 1); 

En faisant cela, vous obtiendrez des messages d'avertissement et de telle sorte que vous ne pouvez pas voir autrement. Ceux-ci peuvent être la différence entre une solution rapide et déchirer vos cheveux pendant des heures. Utilisez-le lorsque vous déboguez.

+0

OH, GRAND. Cela fonctionne bien.Merci bro.Thanks beaucoup. – riad

+0

peut m'aider à utiliser: error_reporting (E_ALL); ini_set ('display_errors', 1); Comment je l'utilise ou ajoute le code sur quelle portion? Je ne l'utilise pas avant. – riad

+0

Vous ajouteriez le code tout en haut de votre script. Vous pouvez également modifier votre fichier php.ini de sorte que, par défaut, c'est le comportement (comme je le crois) et ensuite le modifier en haut pour qu'il ne soit pas en production. –

Questions connexes