Created
February 7, 2023 10:28
-
-
Save fatadz/bf8862ff978bc4539a39006f3d39617f to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html> | |
<head> | |
<title>Crop Image Before Upload</title> | |
<script src="https://code.jquery.com/jquery-3.6.3.min.js" integrity="sha256-pvPw+upLPUjgMXY0G+8O0xUf+/Im1MZjXxxgOcBQBXU=" crossorigin="anonymous"></script> | |
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css"> | |
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script> | |
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.13/cropper.min.css" integrity="sha512-cyzxRvewl+FOKTtpBzYjW6x6IAYUCZy3sGP40hn+DQkqeluGRCax7qztK2ImL64SA+C7kVWdLI6wvdlStawhyw==" crossorigin="anonymous" referrerpolicy="no-referrer" /> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.13/cropper.min.js" integrity="sha512-6lplKUSl86rUVprDIjiW8DuOniNX8UDoRATqZSds/7t6zCQZfaCe3e5zcGaQwxa8Kpn5RTM9Fvl3X2lLV4grPQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script> | |
</head> | |
<style type="text/css"> | |
img { | |
display: block; | |
max-width: 100%; | |
} | |
.preview { | |
overflow: hidden; | |
width: 160px; | |
height: 160px; | |
margin: 10px; | |
border: 1px solid red; | |
} | |
.modal-lg{ | |
max-width: 1000px !important; | |
} | |
</style> | |
<body> | |
<div class="container mt-5"> | |
<div class="card"> | |
<h2 class="card-header">Crop Image Before Upload</h2> | |
<div class="card-body"> | |
<h5 class="card-title">Please Select Image For Cropping</h5> | |
<input type="file" name="image" class="image"> | |
</div> | |
</div> | |
</div> | |
<div class="modal fade" id="modal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true"> | |
<div class="modal-dialog modal-lg"> | |
<div class="modal-content"> | |
<div class="modal-header"> | |
<h5 class="modal-title" id="modalLabel">Crop Image Before Upload</h5> | |
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> | |
</div> | |
<div class="modal-body"> | |
<div class="img-container"> | |
<div class="row"> | |
<div class="col-md-8"> | |
<img id="image" src="#"> | |
</div> | |
<div class="col-md-4"> | |
<div class="preview"></div> | |
</div> | |
</div> | |
</div> | |
</div> | |
<div class="modal-footer"> | |
<button type="button" class="btn btn-primary" id="crop">Crop</button> | |
</div> | |
</div> | |
</div> | |
</div> | |
<script> | |
let $modal = $('#modal'); | |
let image = document.getElementById('image'); | |
let cropper; | |
$("body").on("change", ".image", function(e){ | |
let files = e.target.files; | |
let done = function (url) { | |
image.src = url; | |
$modal.modal('show'); | |
}; | |
let reader; | |
let file; | |
let url; | |
if (files && files.length > 0) { | |
file = files[0]; | |
if (URL) { | |
done(URL.createObjectURL(file)); | |
} else if (FileReader) { | |
reader = new FileReader(); | |
reader.onload = function (e) { | |
done(reader.result); | |
}; | |
reader.readAsDataURL(file); | |
} | |
} | |
}); | |
$modal.on('shown.bs.modal', function () { | |
cropper = new Cropper(image, { | |
aspectRatio: 1, | |
viewMode: 3, | |
preview: '.preview' | |
}); | |
}).on('hidden.bs.modal', function () { | |
cropper.destroy(); | |
cropper = null; | |
}); | |
$("#crop").click(function(){ | |
canvas = cropper.getCroppedCanvas({ | |
width: 160, | |
height: 160, | |
}); | |
canvas.toBlob(function(blob) { | |
url = URL.createObjectURL(blob); | |
let reader = new FileReader(); | |
reader.readAsDataURL(blob); | |
reader.onloadend = function() { | |
let base64data = reader.result; | |
// $.ajax({ | |
// type: "POST", | |
// dataType: "json", | |
// url: "crop-image-upload", | |
// data: {'_token': $('meta[name="_token"]').attr('content'), 'image': base64data}, | |
// success: function(data){ | |
// console.log(data); | |
// $modal.modal('hide'); | |
// alert("Crop image successfully uploaded"); | |
// } | |
// }); | |
alert("Crop image successfully uploaded"); | |
} | |
}); | |
}) | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment