|
<!DOCTYPE html> |
|
<html lang="en"> |
|
<head> |
|
<meta charset="UTF-8"> |
|
<meta name="viewport" content="width=device-width, initial-scale=1.0"> |
|
<title>Color Restoration</title> |
|
<style> |
|
|
|
#colorized-image img { |
|
max-width: 100%; |
|
height: auto; |
|
} |
|
#original-image img { |
|
max-width: 100%; |
|
height: auto; |
|
} |
|
|
|
</style> |
|
</head> |
|
<body> |
|
<h1>Color Restoration</h1> |
|
<form action="/upload/" method="post" enctype="multipart/form-data"> |
|
<input type="file" name="file" accept=".jpg, .jpeg, .png" required> |
|
<button type="submit">Upload</button> |
|
</form> |
|
<hr> |
|
<h2>Original Photo</h2> |
|
<div id="original-image"></div> |
|
<hr> |
|
<h2>Colorized Photo</h2> |
|
<div id="colorized-image"></div> |
|
<hr> |
|
<a id="download-link" href="#" download="colorized_image.jpg" style="display:none;">Download Colorized Image</a> |
|
|
|
<script> |
|
function displayOriginalImage(file) { |
|
const reader = new FileReader(); |
|
reader.onload = function(e) { |
|
const originalImageDiv = document.getElementById('original-image'); |
|
originalImageDiv.innerHTML = `<img src="${e.target.result}" alt="Original Image" width="400">`; |
|
} |
|
reader.readAsDataURL(file); |
|
} |
|
|
|
function displayColorizedImage(blob) { |
|
const url = URL.createObjectURL(blob); |
|
const colorizedImageDiv = document.getElementById('colorized-image'); |
|
colorizedImageDiv.innerHTML = `<img src="${url}" alt="Colorized Image" width="400">`; |
|
const downloadLink = document.getElementById('download-link'); |
|
downloadLink.href = url; |
|
downloadLink.style.display = 'block'; |
|
} |
|
|
|
document.querySelector('form').addEventListener('submit', async function(e) { |
|
e.preventDefault(); |
|
const formData = new FormData(this); |
|
const response = await fetch('/upload/', { |
|
method: 'POST', |
|
body: formData |
|
}); |
|
const blob = await response.blob(); |
|
displayOriginalImage(formData.get('file')); |
|
displayColorizedImage(blob); |
|
}); |
|
</script> |
|
</body> |
|
</html> |
|
|