| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="UTF-8"> |
| <title>Image Viewer</title> |
| <style> |
| body { |
| margin: 0; |
| display: flex; |
| justify-content: center; |
| align-items: center; |
| height: 100vh; |
| overflow: hidden; |
| background-color: black; |
| } |
| #imageContainer { |
| position: relative; |
| text-align: center; |
| width: 100%; |
| height: 100%; |
| overflow: hidden; |
| cursor: grab; |
| } |
| #imageContainer:active { |
| cursor: grabbing; |
| } |
| img { |
| width: 100%; |
| height: 100%; |
| display: inline-block; |
| border-radius: 8px; |
| box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); |
| |
| object-fit: contain; |
| border: none; |
| user-select: none; |
| pointer-events: none; |
| } |
| </style> |
| </head> |
| <body> |
| <div id="imageContainer"> |
| <img id="currentImage" src="file:///your/path/stable-diffusion-webui/outputs/saved.png" alt="Current Image">// Set your path. |
| </div> |
| <script> |
| var imgElement = document.getElementById('currentImage'); |
| var zoomLevel = 1.0; |
| var zoomIncrement = 0.1; |
| |
| |
| var isDragging = false; |
| var startX, startY; |
| var startTranslateX = 0, startTranslateY = 0; |
| |
| |
| centerImage(); |
| |
| |
| document.getElementById('imageContainer').addEventListener('wheel', function(event) { |
| if (event.deltaY < 0) { |
| |
| zoomIn(); |
| } else { |
| |
| zoomOut(); |
| } |
| event.preventDefault(); |
| }); |
| |
| |
| document.getElementById('imageContainer').addEventListener('mousedown', function(event) { |
| |
| if (event.button === 0) { |
| isDragging = true; |
| startX = event.clientX; |
| startY = event.clientY; |
| var transform = imgElement.style.transform.match(/translate\((.*)px, (.*)px\)/); |
| startTranslateX = transform ? parseFloat(transform[1]) : 0; |
| startTranslateY = transform ? parseFloat(transform[2]) : 0; |
| event.preventDefault(); |
| } |
| }); |
| |
| document.addEventListener('mousemove', function(event) { |
| if (isDragging) { |
| var deltaX = event.clientX - startX; |
| var deltaY = event.clientY - startY; |
| var newTranslateX = startTranslateX + deltaX; |
| var newTranslateY = startTranslateY + deltaY; |
| imgElement.style.transform = 'scale(' + zoomLevel + ') translate(' + newTranslateX + 'px, ' + newTranslateY + 'px)'; |
| event.preventDefault(); |
| } |
| }); |
| |
| document.addEventListener('mouseup', function(event) { |
| isDragging = false; |
| }); |
| |
| function zoomIn() { |
| zoomLevel += zoomIncrement; |
| updateZoom(); |
| } |
| |
| function zoomOut() { |
| if (zoomLevel > 1.0) { |
| zoomLevel -= zoomIncrement; |
| updateZoom(); |
| } |
| } |
| |
| function updateZoom() { |
| var containerWidth = document.getElementById('imageContainer').offsetWidth; |
| var containerHeight = document.getElementById('imageContainer').offsetHeight; |
| var imageWidth = imgElement.offsetWidth * zoomLevel; |
| var imageHeight = imgElement.offsetHeight * zoomLevel; |
| |
| var currentTransform = imgElement.style.transform.match(/translate\((.*)px, (.*)px\)/); |
| var currentTranslateX = currentTransform ? parseFloat(currentTransform[1]) : 0; |
| var currentTranslateY = currentTransform ? parseFloat(currentTransform[2]) : 0; |
| |
| var newTranslateX = currentTranslateX; |
| var newTranslateY = currentTranslateY; |
| |
| imgElement.style.transform = 'scale(' + zoomLevel + ') translate(' + newTranslateX + 'px, ' + newTranslateY + 'px)'; |
| |
| |
| if (zoomLevel > 1.0 && imageWidth < containerWidth && imageHeight < containerHeight) { |
| centerImage(); |
| } else if (zoomLevel === 1.0) { |
| centerImage(); |
| } |
| } |
| |
| function centerImage() { |
| imgElement.style.transform = 'scale(' + zoomLevel + ') translate(0px, 0px)'; |
| } |
| |
| |
| setInterval(refreshImage, 50); |
| |
| function refreshImage() { |
| var imgElement = document.getElementById('currentImage'); |
| var previousSrc = imgElement.src; |
| imgElement.src = "file:///your/path/stable-diffusion-webui/outputs/saved.png" + "?" + new Date().getTime(); |
| |
| |
| imgElement.onload = function() { |
| |
| } |
| |
| imgElement.onerror = function() { |
| |
| imgElement.src = previousSrc; |
| } |
| } |
| </script> |
| </body> |
| </html> |
|
|
|
|
|
|
|
|