我已经在互联网上搜索了一段时间,找不到任何告诉我如何将结果从$('#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>
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);
});
此处的代码适用于插件但我无法将看起来像data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPoAAAD...
的结果转换为我可以在php脚本中使用的图像。任何帮助都会很棒。谢谢!
答案 0 :(得分: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);
});
以下代码适用于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);
}