JSFiddle - React, Tailwind, and code Playground
HTML
<script>
var scaleSlider = null;
var scaleValue = null;
var canvas = null;
var context = null;
var image = null;
var fixFileObject = null;
var scale = null;
var messageArea = null;
// var csrf_token_name = "{$csrf_token_name}";
// var csrf_hash = "{$csrf_hash}";
document.addEventListener("DOMContentLoaded", function() {
canvas = document.getElementById("thumbnail");
context = canvas.getContext("2d");
scaleSlider = document.getElementById("scale");
scaleValue = document.getElementById("scale-value");
messageArea = document.getElementById("message")
scaleSlider.addEventListener("change", changeScale);
setFileEventListenner();
});
function changeScale() {
scaleValue.value = scaleSlider.value;
drawCanvas();
}
function setFileEventListenner() {
document.getElementById("file-selecter").addEventListener("change", createPreview);
}
function createPreview(event) {
fixFileObject = null;
var fileObject = event.target.files[0];
if (typeof fileObject === "undefined") {
return;
}
if (fileObject.type.match(/^image\/(jpeg|png)$/) === null) {
// jpegとpng以外の場合はクリアして終了
var fileArea = document.getElementById("file-input");
fileArea.innerHTML = fileArea.innerHTML;
setFileEventListenner();
return;
}
fixFileObject = fileObject;
image = new Image();
var reader = new FileReader();
reader.onload = (function(fileObject) {
return function(event) {
image.src = event.target.result;// base64
};
})(fileObject);
image.onload = function() {
drawCanvas();
}
reader.readAsDataURL(fileObject);
}
function drawCanvas() {
scale = scaleSlider.value;
if (image !== null) {
var imageWidth = parseInt(image.width * scale, 10);
var imageHeight = parseInt(image.height * scale, 10);
canvas.width = imageWidth;
canvas.height = imageHeight;
context.clearRect(0, 0,...