【问题标题】:fengyuanchen jQuery cropper plugin - how to get cropped canvasfengyuanchen jQuery 裁剪器插件 - 如何得到裁剪的画布
【发布时间】:2015-05-14 07:40:44
【问题描述】:

如何使用我自己的按钮裁剪图像?

我试图执行这个

var canvas = $selector.cropper('getCroppedCanvas')

但它返回的是空值。

有没有办法得到裁剪的画布?以及如何将裁剪后的画布数据放入<input type="file"> 值并将其发送到PHP?

【问题讨论】:

    标签: javascript jquery html jquery-plugins


    【解决方案1】:

    您的选择器应该是包含图像的 HTML 容器: Javascript 和 HTML 应该如下所述:

    $img = $('#uploader-preview');
    
    $img.cropper('getCroppedCanvas');
    var canvaURL = canvas.toDataURL('image/jpeg'); // it returns the cropped image / canvas
    <img src="" id="uploader-preview">

    将画布图像发送到 PHP:

    var photo = canvas.toDataURL('image/jpeg');                
    $.ajax({
      method: 'POST',
      url: 'photo_upload.php',
      data: {
        photo: photo
      }
    });
    
    Here's PHP Script
    photo_upload.php
    
    <?php
    	
    	$data = $_POST['photo'];
    	list($type, $data) = explode(';', $data);
    	list(, $data)      = explode(',', $data);
    	$data = base64_decode($data);
    
    	mkdir($_SERVER['DOCUMENT_ROOT'] . "/photos");
    
    	file_put_contents($_SERVER['DOCUMENT_ROOT'] . "/photos/".time().'.png', $data);
    	die;
    ?>

    【讨论】:

    • 我猜第一个 sn-p 的第二行应该是: var canvas = $img.cropper('getCroppedCanvas');或者画布是从哪里来的?
    【解决方案2】:

    什么是 $selector?如果是这样的:

    var $selector = $(".selector");
    

    然后你需要调用 getCroppedCanvas() 函数到 jQuery 包装器。因为如果你写:

    var canvas = $selector.cropper('getCroppedCanvas');
    

    它调用cropper getCroppedCanvas 函数到DOM 元素,而不是jQuery 元素。

    这样写:

    var $selector = $(".selector"); 
    var canvas = $($selector).cropper('getCroppedCanvas');
    

    它会正常工作。如果要将画布数据保存为服务器上的图像,可以阅读this answer

    【讨论】:

    • 您对 jquery 对象的概念似乎有点混乱。 $('body').get(0) == $($('body')).get(0);
    猜你喜欢
    • 2015-07-15
    • 1970-01-01
    • 2019-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多