Untitled
unknown
plain_text
8 months ago
2.4 kB
5
Indexable
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Picture App</title>
<style>
body {
font-family: sans-serif;
margin: 20px;
}
img {
max-width: 100%;
max-height: 300px;
display: block;
margin-top: 16px;
}
</style>
</head>
<body>
<h1>Picture App</h1>
<input type="text" id="urlInput" placeholder="Enter image URL" style="width: 80%;">
<button id="downloadBtn">Download Image</button>
<br>
<img id="image" alt="Downloaded image will appear here">
<br>
<button id="shareBtn">Share Image</button>
<script>
const urlInput = document.getElementById('urlInput');
const downloadBtn = document.getElementById('downloadBtn');
const shareBtn = document.getElementById('shareBtn');
const image = document.getElementById('image');
let imageBlob = null;
// Download the image from the entered URL and display it.
downloadBtn.addEventListener('click', async () => {
const url = urlInput.value.trim();
if (!url) {
alert("Please enter an image URL.");
return;
}
try {
const response = await fetch(url);
if (!response.ok) {
throw new Error("Network response was not ok");
}
imageBlob = await response.blob();
const objectURL = URL.createObjectURL(imageBlob);
image.src = objectURL;
} catch (error) {
console.error("Error downloading image:", error);
alert("Failed to download image. Please check the URL.");
}
});
// Share the downloaded image using the Web Share API.
shareBtn.addEventListener('click', async () => {
if (!imageBlob) {
alert("No image available to share. Please download an image first.");
return;
}
if (navigator.share && navigator.canShare && navigator.canShare({ files: [] })) {
const file = new File([imageBlob], 'shared_image.png', { type: imageBlob.type });
try {
await navigator.share({
files: [file],
title: "Shared Image",
text: "Check out this image!",
});
} catch (error) {
console.error("Error sharing image:", error);
alert("Error sharing image.");
}
} else {
alert("Web Share API is not supported in this browser.");
}
});
</script>
</body>
</html>
Editor is loading...
Leave a Comment