0

私はここで途方に暮れています。すべてを正常にアップロードし、imagejpeg()コマンドでファイルの品質を調整しましたが、imagecopyresampled関数でエラーが発生しているようです:

警告: imagecopyresampled() は、パラメーター 1 がリソースであり、394 行目に指定された文字列であると想定しています

    $imgRaw = $_FILES[$file]['name'];
    $imgRawTemp = $_FILES[$file]['tmp_name'];

    $nameExtract = explode(".", $imgRaw);

    $ext = $nameExtract[count($nameExtract)-1];

    $imgAll = getimagesize($_FILES[$file]['tmp_name']);

    $uploadedName = time().uniqid()."_original.";

    $dir = "usrPld/";

    $thisImg = $dir.$uploadedName.$ext;

    if($imgAll['mime'] == 'image/jpeg' || $imgAll['mime'] == 'image/png')
    {
        if(move_uploaded_file($imgRawTemp, $thisImg))
        {

            list($width, $height, $type, $attr) = $imgAll;

            $thumbnailWidth = 250;
            $viewingWidth = 910;

            $thumbHeight = $thumbnailWidth*($height/$width);
            $viewingHeight = $viewingWidth*($height/$width);

            if($imgAll['mime'] == 'image/jpeg')
            {
                $image = imagecreatefromjpeg($thisImg);
            }
            else if($imgAll['mime'] == 'image/png')
            {
                $image = imagecreatefrompng($thisImg);
            }

            $newName = time().uniqid().".jpg";
            $newName2 = time().uniqid().".jpg";

            if($width > $viewingWidth)
            {
                if(imagejpeg($image, $dir.$newName, 100))
                {
                    if(imagecopyresampled($dir.$newName2, 
                            $dir.$newName, 
                            0, 0, 0, 0, 
                            $viewingWidth, 
                            $viewingHeight, 
                            $width, 
                            $height))
                    {
                        unlink($thisImg);
                        unlink($dir.$newName);
                    }
                }
            }
            else
            {
                if(imagejpeg($image, $dir."no_".$newName, 100))
                {
                    unlink($thisImg);
                }
            }
        }
    }
    else
    {
        return "format error";
    }

奇妙なことに、私がチェック$heightしたところ(エラーがそこに向けられているため)、必要な数値が出力されています。

事前に助けてくれてありがとう。

4

1 に答える 1

3

$height はあなたの問題ではありません。ディレクトリ パスを最初の 2 つのパラメーターとして imagecopyresampled() に渡していますが、それらは画像リソースである必要があります。したがって、最初に次のようなことを行う必要があります。

$destImage = imagecreatetruecolor($viewingWidth, $viewingHeight);
$sourceImage = imagecreatefromjpeg($dir.$newName);

次に、それらを関数に渡します。

if(imagecopyresampled($destImage, 
                        $sourceImage, 
                        0, 0, 0, 0, 
                        $viewingWidth, 
                        $viewingHeight, 
                        $width, 
                        $height))

次に、おそらく $destImage を $dir.$newName2 パスに書き込みたいと思うでしょう。

于 2013-02-25T19:50:53.137 に答える