我想知道为什么这个脚本不起作用。使用jQuery' $.post
我执行一个PHP脚本,在其中上传图像。之后,图像被裁剪并保存在新目录中。本地这个脚本工作正常,但在线我得到500错误。
图像(或图像,因为jquery处于循环中)上传得很好,但裁剪部分不会继续。我只得到空目录。知道为什么会这样吗?
PHP:
session_start();
$id = session_id();
$imageData = $_POST["imageData"];
$i=1;
while(file_exists("../".$id."/data".$i.".png")) {
$i++;
}
if ($_POST["imageData"]){
$decoded = $imageData;
$exp = explode(',', $decoded);
$base64 = array_pop($exp);
$data = base64_decode($base64);
$file = "data".$i.".png";
$success=file_put_contents('../'.$id.'/'.$file, $data);
if($success) {
mkdir("../" . $id . "/data" . $i, 0775);
$imagesize = getimagesize('data://application/octet-stream;base64,' . base64_encode($data));
$width = $imagesize[0];
$height = $imagesize[1];
$im = imagecreatefromstring($data);
$im1 = imagecrop($im, ['x' => 0, 'y' => 0, 'width' => $width / 2, 'height' => $height / 2]);
$im2 = imagecrop($im, ['x' => $width / 2, 'y' => 0, 'width' => $width / 2, 'height' => $height / 2]);
$im3 = imagecrop($im, ['x' => $width / 2, 'y' => $height / 2, 'width' => $width / 2, 'height' => $height / 2]);
$im4 = imagecrop($im, ['x' => 0, 'y' => $height / 2, 'width' => $width / 2, 'height' => $height / 2]);
if ($i == 5) {
$im1 = imagerotate($im1, 90, 1);
$im2 = imagerotate($im2, -90, 1);
$im3 = imagerotate($im3, -90, 1);
$im4 = imagerotate($im4, 90, 1);
} elseif ($i == 6) {
$im1 = imagerotate($im1, -90, 1);
$im2 = imagerotate($im2, 90, 1);
$im3 = imagerotate($im3, 90, 1);
$im4 = imagerotate($im4, -90, 1);
} elseif ($i == 7) {
$im1 = imagerotate($im1, -90, 1);
$im2 = imagerotate($im2, 90, 1);
$im3 = imagerotate($im3, -90, 1);
$im4 = imagerotate($im4, 90, 1);
} elseif ($i == 9) {
$im1 = imagerotate($im1, -90, 1);
$im2 = imagerotate($im2, 90, 1);
$im3 = imagerotate($im3, -90, 1);
$im4 = imagerotate($im4, 90, 1);
} elseif ($i == 11) {
$im3 = imagerotate($im3, 180, 1);
$im4 = imagerotate($im4, 180, 1);
} elseif ($i == 12) {
$im1 = imagerotate($im1, 180, 1);
$im2 = imagerotate($im2, 180, 1);
}
imagepng($im1, "../" . $id . "/data" . $i . "/a" . $i . ".png");
imagepng($im2, "../" . $id . "/data" . $i . "/b" . $i . ".png");
imagepng($im3, "../" . $id . "/data" . $i . "/c" . $i . ".png");
imagepng($im4, "../" . $id . "/data" . $i . "/d" . $i . ".png");
}
JQuery的:
function exportImg(val){
var i = 0;
$.post('php/createdir.php');
for(val;val<=12;val++){
var imagenr = document.getElementById('preview'+val).children[0].id.replace ( /[^\d.]/g, '' );
var imageData = $('#image-cropper'+imagenr).cropit('export', {originalSize: true});
$.post('php/upload.php', { imageData: imageData }, function(){i++; if (i==12){window.location = 'success.php'}});
}
}
修改
我检查了错误日志。它声明:在第24行调用未定义的函数imagecrop() 但为什么会这样呢?