我正在創建一個網站,我需要使用jQuery縮放腳本。問題是我需要管理員上傳的原始文件的4倍大圖像。我寫的代碼是:php imagecopyresampled不工作
$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>";
}
而發送該文件的形式:
<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庫也工作正常。
沒有錯,你的代碼只是增加內存有限..請參閱下面的答案.. – Dinesh
能你在調用'imagecopyresampled()'之前驗證'$ nimage!== FALSE'和'$ image!== FALSE'?同時讓我們知道您正在使用的圖像的大小。爲什麼不把他們的圖片放在網上供他人測試你的代碼? –