2012-05-14 8 views
0

PHPで画像サイズを確認しようとしていますが、いくつかエラーが発生しています。イメージを保存して表示することはできますが、サイズをチェックする関数を追加するとエラーになります。PHPの画像の高さ/幅を確認する

Warning: imagesx() expects parameter 1 to be resource, array given in... 

Warning: imagesy() expects parameter 1 to be resource, array given in... 

は、ここで私はここで

if(isset($_POST['submitImage'])){ 
    $image = new imageProcessing; 
    $image->checkSize($_FILES["image"]); 
} 

をアップロード/サイズを確認するために使うものだHTML

?> 

<h2>Upload Profile Image</h2> 
<form action="editinfo.php" method="post" enctype="multipart/form-data"> 
<label for="file">Filename:</label> 
<input type="file" name="image" id="file" /> <br /> 
<input type="submit" name="submitImage" value="Submit" /> 
</form> 

そして、ここでは、関数が大き

function checkSize($image){ 
    if(imagesx($image) > 100 OR imagesy($image) > 100){ 
     echo "too large"; 
    } 
} 

をチェックすることですDrAgonmoraとしてのgetimagesizeの使用y提案、次のエラーが表示されます。

Warning: getimagesize() expects parameter 1 to be string, array given in... 

答えて

1

$ _FILESは、アップロードファイルごとの情報の配列を提供します。この配列には、PHPがファイルを格納している一時ファイルへのパスが含まれています。使用する必要がある一時ファイル名です。同様に、imagesx()とimagesy()もパラメータとしてファイル名を受け入れません。彼らはGDリソースハンドルを期待しています。したがって、コードは複数のレベルで壊れています。

if ($_FILES['image']['error'] !== UPLOAD_ERR_OK) { 
    die("File upload failed with error code {$_FILES['image']['error']}"); 
} 

$info = getimagesize($_FILES['image']['tmp_name']); 
if ($info === FALSE) { 
    die("Invalid file type"); 
} 

if (($info[0] > 100) || ($info[1] > 100)) { 
    die("Image must be at most 100x100"); 
} 
1

私は実際には数時間前にこれで働いていました。私の解決策は次のとおりです。

$bannersize = getimagesize($image); 
if ($bannersize[0] > 100 || $bannersize[1] > 100) { 
    //error 
} 

$ imageがnullでないことを確認してください。

あなたがここにgetimagesizeについて読むことができます。 http://php.net/manual/en/function.getimagesize.php

+0

私はこれを使用してエラーが発生しています。私はこれを含めるために私のポストを更新しました。 – user1104854

+0

あなたは@Marc Bが何を言ったかを見てみたいと思うでしょう。彼はファイル全体を説明します。 – fruitcup

+0

あなたの助言に感謝します。しかし私はMarcの提案を使って動作させました。 – user1104854

関連する問題