0

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";
    }
}

DrAgonmorayが提案したようにgetimagesizeを使用すると、次のエラーが発生します

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

3 に答える 3

1

これを行うには、getimagesize() 関数を使用できます。詳細については、php ドキュメントを参照してください。

http://php.net/manual/en/function.getimagesize.php

于 2012-05-14T01:32:47.657 に答える
1

私は実際に数時間前にこれを扱っていました。これが私の解決策です:

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

$image が null でないことを確認するように注意してください。

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

于 2012-05-14T01:39:46.573 に答える
1

$_FILES は、アップロードする FILE ごとに情報の ARRAY を提供します。この配列には、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");
}
于 2012-05-14T01:40:21.077 に答える