首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将图片从钩端导出到php以供上传?

如何将图片从钩端导出到php以供上传?
EN

Stack Overflow用户
提问于 2016-02-01 08:20:38
回答 1查看 5.6K关注 0票数 3

我已经在互联网上搜索了很长一段时间,找不到任何能告诉我如何将$('#image-cropper').cropit('export')的结果转化为可以上传到服务器的图像的东西。我正在使用克罗维特插件,我所需要的只是一个图像,我可以传递到我的php上传脚本。我的代码如下:

HTML:

代码语言:javascript
复制
<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>

jQuery:

代码语言:javascript
复制
            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);
            });  

这里的代码正在为插件正常工作,但我无法将类似于data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD...的结果转换为我可以在php脚本中使用的图像。任何帮助都会很好。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-19 18:57:48

我让它工作的方法是处理克罗比特的质量设置,并创建一个读取base64字符串并将其转换为图像的PHP函数。

下面的代码是用于cropit的。我设置了一个超时,因为如果不这样做,它会在cropit创建base64之前将表单发送给php。base64字符串仅存储在一个文本字段中,php可以基于$_POST进行通信。

代码语言:javascript
复制
//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);
});

下面的代码用于php。它的工作方式是解码base64,然后将其移到指定的目录中。

代码语言:javascript
复制
function decode ($code, $username) {
    list($type, $code) = explode(';', $code);
    list(, $code)      = explode(',', $code);
    $code = base64_decode($code);

    file_put_contents('directory/filename.jpg', $code);
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35125836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档