PHP:上传和裁剪在本地工作,但在线我得到错误500

时间:2017-06-08 13:07:42

标签: php jquery image-processing upload

我想知道为什么这个脚本不起作用。使用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() 但为什么会这样呢?

0 个答案:

没有答案
相关问题