home
/
aioutajg
/
wimg.online
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] .well-known
N/A
[DIR] images
N/A
0u.php
37.68 KB
Rename
Delete
Wimg.online.zip
226.95 KB
Rename
Delete
about-tool.php
2.40 KB
Rename
Delete
about-us.php
3.91 KB
Rename
Delete
ads.txt
58 bytes
Rename
Delete
body.php
4.64 KB
Rename
Delete
contact-us.php
2.41 KB
Rename
Delete
cookies-policy.php
4.56 KB
Rename
Delete
disclaimer.php
3.56 KB
Rename
Delete
dmca.php
4.42 KB
Rename
Delete
error_log
1.38 KB
Rename
Delete
faqs.php
6.07 KB
Rename
Delete
favicon.ico
187.10 KB
Rename
Delete
features.php
3.84 KB
Rename
Delete
footer.php
1.16 KB
Rename
Delete
googlea90f9bc5efd6900b.html
53 bytes
Rename
Delete
header.php
3.17 KB
Rename
Delete
how-to-use.php
3.15 KB
Rename
Delete
index.php
1.49 KB
Rename
Delete
logo.png
6.41 KB
Rename
Delete
privacy-policy.php
6.81 KB
Rename
Delete
robots.txt
144 bytes
Rename
Delete
script.js
4.44 KB
Rename
Delete
sitemap.xml
1.45 KB
Rename
Delete
style.css
8.86 KB
Rename
Delete
terms-and-conditions.php
4.88 KB
Rename
Delete
const imageLoader = document.getElementById('imageLoader'); const imageCanvas = document.getElementById('imageCanvas'); const ctx = imageCanvas.getContext('2d'); let img = new Image(); // Function to sanitize user input function sanitizeInput(input) { return input.replace(/[^\w\s-]/gi, ''); // Remove special characters except spaces and hyphens } // Function to validate file type function isValidImageFile(file) { const allowedTypes = ['image/jpeg', 'image/png', 'image/gif']; return allowedTypes.includes(file.type); } // Function to validate numeric inputs function isValidNumber(value, min, max) { return !isNaN(value) && value >= min && value <= max; } // Load and display the image imageLoader.addEventListener('change', (e) => { const file = e.target.files[0]; if (!file || !isValidImageFile(file)) { alert('無効なファイル形式です。JPEG、PNG、またはGIF画像を選択してください。'); return; } const reader = new FileReader(); reader.onload = function(event) { img.onload = () => { imageCanvas.width = img.width; imageCanvas.height = img.height; ctx.drawImage(img, 0, 0); }; img.onerror = () => { alert('画像の読み込み中にエラーが発生しました。'); }; img.src = event.target.result; }; reader.onerror = () => { alert('ファイルの読み込み中にエラーが発生しました。'); }; reader.readAsDataURL(file); }); // Apply watermark to the image function applyWatermark() { if (!img.src) { alert('画像をアップロードしてください。'); return; } const watermarkText = sanitizeInput(document.getElementById('watermarkText').value); const fontSize = parseInt(document.getElementById('fontSize').value, 10); const fontColor = document.getElementById('fontColor').value; const textAngle = parseInt(document.getElementById('textAngle').value, 10); const position = document.getElementById('positionSelect').value; const fontSelect = sanitizeInput(document.getElementById('fontSelect').value); // Validate inputs if (!watermarkText || !isValidNumber(fontSize, 10, 100) || !isValidNumber(textAngle, 0, 360)) { alert('無効な入力値です。フォントサイズは10~100、角度は0~360の範囲で指定してください。'); return; } ctx.clearRect(0, 0, imageCanvas.width, imageCanvas.height); ctx.drawImage(img, 0, 0); ctx.font = `${fontSize}px ${fontSelect}`; ctx.fillStyle = fontColor; ctx.textAlign = "center"; ctx.save(); ctx.translate(imageCanvas.width / 2, imageCanvas.height / 2); ctx.rotate(textAngle * Math.PI / 180); let xPos = 0, yPos = 0; switch(position) { case 'top-left': xPos = -imageCanvas.width / 2 + fontSize; yPos = -imageCanvas.height / 2 + fontSize; break; case 'top-center': xPos = 0; yPos = -imageCanvas.height / 2 + fontSize; break; case 'top-right': xPos = imageCanvas.width / 2 - fontSize; yPos = -imageCanvas.height / 2 + fontSize; break; case 'middle-left': xPos = -imageCanvas.width / 2 + fontSize; yPos = 0; break; case 'middle-center': xPos = 0; yPos = 0; break; case 'middle-right': xPos = imageCanvas.width / 2 - fontSize; yPos = 0; break; case 'bottom-left': xPos = -imageCanvas.width / 2 + fontSize; yPos = imageCanvas.height / 2 - fontSize; break; case 'bottom-center': xPos = 0; yPos = imageCanvas.height / 2 - fontSize; break; case 'bottom-right': xPos = imageCanvas.width / 2 - fontSize; yPos = imageCanvas.height / 2 - fontSize; break; } ctx.fillText(watermarkText, xPos, yPos); ctx.restore(); // Generate downloadable image const image = imageCanvas.toDataURL("image/png"); const downloadLink = document.getElementById('downloadLink'); downloadLink.href = image; downloadLink.download = `watermarked-image-${Date.now()}.png`; downloadLink.style.display = 'block'; }
Save