【发布时间】:2015-05-14 07:40:44
【问题描述】:
如何使用我自己的按钮裁剪图像?
我试图执行这个
var canvas = $selector.cropper('getCroppedCanvas')
但它返回的是空值。
有没有办法得到裁剪的画布?以及如何将裁剪后的画布数据放入<input type="file"> 值并将其发送到PHP?
【问题讨论】:
标签: javascript jquery html jquery-plugins
如何使用我自己的按钮裁剪图像?
我试图执行这个
var canvas = $selector.cropper('getCroppedCanvas')
但它返回的是空值。
有没有办法得到裁剪的画布?以及如何将裁剪后的画布数据放入<input type="file"> 值并将其发送到PHP?
【问题讨论】:
标签: javascript jquery html jquery-plugins
您的选择器应该是包含图像的 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;
?>
【讨论】:
什么是 $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
【讨论】: