如何将图像从cropit导出到php上传?

Joe*_*tto 3 php jquery

我一直在互联网上搜索一段时间,找不到任何告诉我如何将结果$('#image-cropper').cropit('export')转换成PHP可以上传到服务器的图像.我正在使用Cropit插件,我需要的是一个可以传递到我的php上传脚本的图像.我的代码如下:

HTML:

<div id="image-cropper">
    <input type="file" class="cropit-image-input" />
    <div class="cropit-image-preview"></div>
    <input type="range" class="cropit-image-zoom-input" />
    <button class="export">Export</button>
</div>
Run Code Online (Sandbox Code Playgroud)

jQuery的:

            var username = "<?php echo $userData['username']; ?>";
            $('#image-cropper').cropit({
                imageState:{
                    src:'users/'+username+'/profile_picture.jpg'
                },
            });   

            $('#image-cropper').cropit('previewSize', {width:500, height:500});


            $('.export').click(function() {
                var imageData = $('#image-cropper').cropit('export');
                //$("#code").val(imageData);
                window.open(imageData);
            });  
Run Code Online (Sandbox Code Playgroud)

这里的代码适用于插件,但我无法将结果看起来像是data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD...一个我可以在php脚本中使用的图像.任何帮助都会很棒.谢谢!

Joe*_*tto 5

我让它工作的方式是弄乱Cropit的质量设置并创建一个读取base64字符串并将其转换为图像的PHP函数.

以下代码适用于cropit.我正在设置超时,因为如果你不这样做,它会将表单发送到php,然后cropit才能创建base64.base64字符串只存储在php可以基于的文本字段中$_POST

//Initiate Cropper
$('.image-editor').cropit();

//Assign Export Function
$('.export').click(function() {
    var imageData = $('.image-editor').cropit('export', {
        type: 'image/jpeg',
        quality: 0.33,
        originalSize: true,
    });

    //Set value of hidden input to base64
    $("#hidden_base64").val(imageData);

    //Pause form submission until input is populated
    window.setTimeout(function() {
        document.upload_form.submit();
        alert(imageData);
    }, 1000);
});
Run Code Online (Sandbox Code Playgroud)

下面的代码是针对php的.它的工作原理是解码base64,然后将其移动到指定的目录.

function decode ($code, $username) {
    list($type, $code) = explode(';', $code);
    list(, $code)      = explode(',', $code);
    $code = base64_decode($code);

    file_put_contents('directory/filename.jpg', $code);
}
Run Code Online (Sandbox Code Playgroud)