<script src="assets/jcrop/js/jquery.Jcrop.js"></script>
<link rel="stylesheet" href="assets/jcrop/css/jquery.Jcrop.css" type="text/css" />
<link rel="stylesheet" href="assets/style.css" type="text/css" />
<script>
var jcrop_api, boundx, boundy,
// Grab some information about the preview pane
$preview, $pcnt, $pimg, xsize, ysize;
$(document).ready(function(){
$preview = $('#preview-pane'),
$pcnt = $('#preview-pane .preview-container'),
$pimg = $('#preview-pane .preview-container img'),
xsize = $pcnt.width(),
ysize = $pcnt.height();
});
function updatePreview(c)
{
if (parseInt(c.w) > 0)
{
var rx = xsize / c.w;
var ry = ysize / c.h;
$pimg.css({
width: Math.round(rx * boundx) + 'px',
height: Math.round(ry * boundy) + 'px',
marginLeft: '-' + Math.round(rx * c.x) + 'px',
marginTop: '-' + Math.round(ry * c.y) + 'px'
});
}
};
function checkCoords()
{
if (parseInt($('#w').val())) return true;
alert('Please select a crop region then press submit.');
return false;
};//
function updateCoords(c)
{
$('#x').val(c.x);
$('#y').val(c.y);
$('#w').val(c.w);
$('#h').val(c.h);
console.log(c.x,c.y,c.h,c.w);
};
function uploadAndCrop(){
if (window.File && window.FileReader && window.FileList && window.Blob) {
//if( $(this).width )
console.log($(this));
var file_img = document.getElementById('thumbnail');
var ftype = file_img.files[0].type;
if(ftype=='image/png' || ftype=='image/gif' || ftype=='image/jpg' || ftype=='image/jpeg'
|| ftype=='image/bmp'){
} else {
alert('Invalid image file selected');
$('#thumbnail').val('');
return;
}
// var img = new Image();
// img.file = file_img.files[0];
// var reader=new FileReader();
// reader.readAsDataURL(file_img);
// console.log("Image ->",img);
// return;
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(ev){
//console.log(xhr.responseText);
if(xhr.readyState === 4){
if(xhr.responseText.indexOf("Error:")>=0){
document.getElementById('upload_error').innerHTML=xhr.responseText;
return ;
}
document.getElementById('upload_error').innerHTML="";
var imgHTML = "<img src=\"uploads/"+xhr.responseText+"\" id=\"crop_target\"\n\
class=\"img-responsive\">";
//alert(imgHTML);
document.getElementById('photo').innerHTML = imgHTML;
$pimg.attr('src',"uploads/"+xhr.responseText);
$('#crop_src').val("uploads/"+xhr.responseText);
$('#crop_target').Jcrop({
onChange: updatePreview,
onSelect: updateCoords,
aspectRatio: 1
},function(){
// Use the API to get the real image size
var bounds = this.getBounds();
boundx = bounds[0];
boundy = bounds[1];
// Store the API in the jcrop_api variable
jcrop_api = this;
// Move the preview into the jcrop container for css positioning
$preview.appendTo(jcrop_api.ui.holder);
});
$('#myModal').modal();
}
};
xhr.open('POST', './upload.php', true);
//var files = document.getElementById('thumbnail');
//var files = $('#thumbnail');
//console.log(files);
var formData = new FormData();
formData.append('upload_and_crop_file',file_img.files[0]);
formData.append('upload_and_crop_dest',"./uploads/");
formData.append('action',"upload_and_crop");
//console.log(formData);
xhr.send(formData);
} else {
alert('The File APIs are not fully supported in this browser.');
}
}
function crop(){
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function(ev){
if(xhr.readyState === 4) { ///complete
console.log(xhr.responseText);
//alert("Crop Result "+xhr.responseText);
$('#myModal').modal('hide');
document.getElementById('final_thumbnail').src=xhr.responseText;
$('#cropped_thumbnail').val(xhr.responseText);
$('#change_thumb').val(1);
} else if(xhr.readState === 0) { }//uninitialized
else if(xhr.readState === 1) { }//loading
else if(xhr.readState === 2) { }//loaded
else if(xhr.readState === 3) { }//interactive
}
xhr.open('POST', './crop.php', true);
var data = new FormData(document.forms.namedItem("crop_form"));
console.log(data);
xhr.send(data);
}
</script>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Choose Thumbnail</h4>
</div>
<div class="modal-body">
<div id="filesInfo" width="100%">
<div id="photo" width="70%" style="float:left; border:5px;"></div>
<div id="preview-pane" width="30%" style="left:85%">
<div class="preview-container">
<img src="" class="jcrop-preview" alt="Preview" id="preview-img"/>
</div>
</div>
<form action="" method="post" onsubmit="return checkCoords();" name="crop_form">
<input type="hidden" name="src" value="" id="crop_src" />
<input type="hidden" name="path_to_dest" value="" id="crop_src" />
<input type="hidden" id="x" name="x" />
<input type="hidden" id="y" name="y" />
<input type="hidden" id="w" name="w" />
<input type="hidden" id="h" name="h" />
<input type="hidden" name="action" value="handle_crop" />
<!-- <input type="button" value="Crop Image" id="Crop"
onClick="crop()"/>-->
</form>
<div style="clear:both"></div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary" onClick="crop()">Save</button>
</div>
</div>
</div>
</div>
|