php ImageCopyRessampled是';行不通

php ImageCopyRessampled是';行不通,php,image,gd,Php,Image,Gd,我正在创建一个需要使用jQuery缩放脚本的网站。问题是我需要一个由管理员上传的原始文件的4倍大的图像。我写的代码是: $allowedExts = array("jpeg", "jpg"); $extension = end(explode(".", $_FILES["file"]["name"])); if (in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) {

我正在创建一个需要使用jQuery缩放脚本的网站。问题是我需要一个由管理员上传的原始文件的4倍大的图像。我写的代码是:

$allowedExts = array("jpeg", "jpg");
$extension = end(explode(".", $_FILES["file"]["name"]));
if (in_array($extension, $allowedExts))
{
    if ($_FILES["file"]["error"] > 0)
    {
        $out = "Error: " . $_FILES["file"]["error"] ."<br>";
    }
    else
    {
        $fname =  "img/" . $_POST["map"] . "." . $extension;
        move_uploaded_file($_FILES["file"]["tmp_name"], $fname);

        //crear imagen grande
        if(file_exists($fname)){
            list( $width, $height ) = getimagesize($fname);
            $nwidth = $width * 4;
            $nheight = $height * 4;
            $nimage = imagecreatetruecolor( $nwidth, $nheight );
            $image = imagecreatefromjpeg( $fname );
            if(imagecopyresampled( $nimage, $image, 0, 0, 0, 0, $nwidth, $nheight, $width, $height)){
                $nfname = "img/" . $_POST["map"] . "_big." . $extension;
                imagejpeg( $nimage, $nfname, 100 );
            }
            else{
                echo "Failed At re-sizing the image";
            }
            imagedestroy($image);
            imagedestroy($nimage);
        }
        else{
            echo "Can't find the file";
        }

        $out = $_FILES["file"]["name"] . " has been uploaded sucessfully <br>";
    }
}
else
{
    $out = "Invalid file (JPG-JPEG Only)<br>";
}
$allowedExts=数组(“jpeg”、“jpg”);
$extension=end(分解(“.”,$_文件[“文件”][“名称]);
if(在数组中($extension,$allowedExts))
{
如果($\u文件[“文件”][“错误”]>0)
{
$out=“Error:”..$\u文件[“文件”][“错误”]。“
”; } 其他的 { $fname=“img/”$\u POST[“map”]。“$extension; 移动上传的文件($文件[“文件”][“tmp文件名”],$fname); //克瑞尔imagen grande酒店 如果(文件_存在($fname)){ 列表($width,$height)=getimagesize($fname); $nwidth=$width*4; $nheight=$height*4; $nimage=imagecreatetruecolor($nwidth,$nheight); $image=imagecreatefromjpeg($fname); if(imagecopyresampled($nimage,$image,0,0,0,$nwidth,$nheight,$width,$height)){ $nfname=“img/”$\u POST[“map”]。“\u big.”扩展名; 图像JPEG($nimage,$nfname,100); } 否则{ echo“重新调整图像大小失败”; } 图像销毁($图像); 图像破坏(尼马吉美元); } 否则{ echo“找不到文件”; } $out=$\u文件[“文件”][“名称”]”已成功上载
“; } } 其他的 { $out=“无效文件(仅限JPG-JPEG)
”; }
发送文件的表单是:

<form action="handler.php" method="post"
                enctype="multipart/form-data">
                <label for="file">Surface:</label>
                <input type="file" name="file" id="file"><br>
                <input type="hidden" name="id" value="2">
                <input type="hidden" name="map" value="surf">
                <input type="submit" class="buttons" name="submit" value="Submit" onmouseover="butOn(this,true)" onmouseout="butOn(this,false)">
              </form> <br><br>

表面:




问题是,当上传图像时,它给了我“重新调整大小失败”的东西,所以imagecopyresampled函数失败了。我还通过echo功能检查了宽度和高度变量,它们都正常。GD库也工作正常。

GD函数的典型问题是它们很快就达到了PHP内存上限

执行
phpinfo()
并检查电流限制

我建议你增加到64M甚至128M。您可以在PHP.ini文件中对此进行更改,或添加一个.htaccess文件,其中包含:

php_value memory_limit 64M
也可以从.php文件中执行此操作:

ini_set('memory_limit', '64M');

phpinfo()
右侧的列应显示修改后的值。

已解决:结果是上载的图像已损坏或其他问题,操作系统图像查看器无法打开它。

代码没有问题,只需增加内存限制。。请参见下面的答案。您能验证
$nimage!==FALSE
$image!==在调用
imagecopyresampled()
之前为FALSE?同时让我们知道您正在处理的图像的大小。为什么不把图片放到网上让别人测试你的代码呢?