2009-04-07 5 views
0

画像をフォルダから入力する必要があります。サイズ変更後、サイズ変更した画像を出力フォルダに保存する必要があります。私はコードを書いた。しかし、画像のサイズを変更した後の私のコードでは、出力フォルダは黒い画像しか持っていません。フォルダから画像を取り込み、サイズ変更後に出力フォルダに保存します

このコードをデバッグするには、&出力フォルダを作成し、入力フォルダにgifイメージをいくつか入れて、出力フォルダの出力を確認してください。助けてください。

<?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); 
?> 

答えて

2

あなたのエラーは、この行である:

$uploadedfile = $imgarray[$i]; 

あなたの画像が入力フォルダにあるが、これは単なるイメージ名に変数を設定しているので、あなたがgetimagesizeそれをimagecreatefromgifを呼び出すとしようとすると、画像を見つけることができず、結果として黒の出力が得られます。修正するには、名前の前に正しいディレクトリを追加してください。

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

この変更でテストされ、動作します。

側の注意点として、私はすぐにすることができた上のerror_reportingの持っていることによってあなたのコードが間違っていたものを見つけるは:

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

これにより、あなたは警告メッセージを取得しますと、そのようなあなたがいないこと別途参照してください。これらは、迅速な修正と数時間のあなたの髪の引き裂きとの違いになります。デバッグ中に使用します。

+0

OH、GREAT。それはうまくいきます。おじさんに感謝しています。 – riad

+0

私はあなたが使用するのに役立つことができます: error_reporting(E_ALL);ini_set( 'display_errors'、1); どのようにして部分を使用するか、コードを追加しますか?以前は使っていません。 – riad

+0

スクリプトの最上部にコードを追加します。また、php.iniを変更して、デフォルトでこれが(私が信じているように)動作していることを確認し、それをトップに変更して、プロダクション環境ではないようにすることもできます。 –

関連する問題