Co chcę tutaj zrobić, to zanim Dropzone.js wyśle upuszczony obraz na serwer, pojawi się modal z plikiem cropper.js (skrypt fengyuanchen), aby użytkownik mógł przyciąć obraz, a gdy obraz zostanie przycięty, wyślij go za pomocą Dropzone.js na serwer.Używanie pliku cropper.js przed zrzutem pliku Dropzone.js do serwera
Kiedy więc zmienię obraz src z #cropbox za pomocą funkcji fileToBase64 i zamienię obraz croppera na funkcję cropper ("zamień"), wyświetla on obraz default.jpg, zamiast nowego przesłanego z użytkowników
HTML
<div class="wrapper-crop-box">
<div class="crop-box">
<img src="default.jpg" alt="Cropbox" id="cropbox">
</div>
</div>
JS:
function fileToBase64(file) {
var preview = document.querySelector('.crop-box img');
var reader = new FileReader();
reader.onloadend = function() {
preview.src = reader.result;
}
if (file) {
reader.readAsDataURL(file);
} else {
preview.src = "";
}
}
$(function() {
Dropzone.options.avtDropzone = {
acceptedFiles: 'image/*',
autoProcessQueue: true,
paramName: 'file',
maxFilesize: 2,
maxFiles: 1,
thumbnailWidth: 200,
thumbnailHeight: 200,
accept: function(file, done) {
fileToBase64(file);
$('#cropbox').cropper('replace', $('#cropbox').attr('src'));
$('.wrapper-crop-box').fadeIn();
done();
},
init: function() {
this.on("addedfile", function(file) {
if (this.files[1]!=null){
this.removeFile(this.files[0]);
}
});
}
};
$('#cropbox').cropper({
aspectRatio: 1/1,
resizable: false,
guides: false,
dragCrop: false,
autoCropArea: 0.4,
checkImageOrigin: false,
preview: '.avatar'
});
});
działa niesamowicie .. z wyjątkiem tego, że nie przesyła przyciętego obrazu dla mnie, ale oryginał:/umieść mój kod w skrzypcach https://jsfiddle.net/CanR/1b9dy5cd/, więc każdy krok jest lub wydaje się w porządku, tyle tylko, że Wynik końcowy nie jest kwadratem przyciętym, ale oryginałem – Can