-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathindex.html
More file actions
123 lines (116 loc) · 6.18 KB
/
index.html
File metadata and controls
123 lines (116 loc) · 6.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' data: blob:; script-src 'self' https://umami.dev.futc.de; style-src 'self'; font-src 'self'; connect-src 'self' blob: https://umami.dev.futc.de; object-src 'none'; base-uri 'self'; form-action 'self'; child-src 'self'; worker-src 'self' blob:; upgrade-insecure-requests;">
<title>Instagram Panorama Slicer</title>
<link rel="stylesheet" href="styles.css">
<link rel="icon" type="image/png" href="images/favicon.png" />
<script src="js/jszip.min.js"></script>
<script src="js/FileSaver.min.js"></script>
<script defer src="https://umami.dev.futc.de/script.js" data-website-id="2aa2e0d0-aa61-4e38-986a-77eb590f7ae5"></script>
</head>
<body>
<div class="container">
<header>
<div class="logo-container">
<img src="images/logo.svg" alt="FUTC Bird Logo" width="100" height="100" class="logo">
</div>
<h1>FUTC's Instagram Panorama Slicer</h1>
<p>Split your panorama images into Instagram-friendly carousel posts (3:4 aspect ratio)</p>
<p>Your photos never leave your computer, all processing is done locally</p>
</header>
<!-- Loading overlay -->
<div id="loading-overlay" class="loading-overlay">
<div class="loading-content">
<div class="spinner"></div>
<p id="loading-text">Processing your image...</p>
</div>
</div>
<div id="error-message" class="error-message">
<div class="error-content">
<img src="images/error-icon.svg" alt="Error" width="24" height="24">
<p>Please upload a panorama image with a horizontal aspect ratio (width > height).</p>
<button id="dismiss-error" class="secondary-btn">Dismiss</button>
</div>
</div>
<div class="upload-area" id="upload-area">
<div class="upload-inner">
<img src="images/upload-icon.svg" alt="Upload" width="48" height="48">
<h3>Drop your panorama image here</h3>
<p>or</p>
<label for="file-input" class="file-input-label">Select File</label>
<input type="file" id="file-input" accept="image/*" hidden>
<p class="support-text">Supports: JPG, PNG, WEBP</p>
</div>
</div>
<div class="preview-container" id="preview-container">
<h2>Preview</h2>
<div class="preview-wrapper">
<div class="image-preview">
<img id="preview-img" src="" alt="Image preview">
</div>
<div class="preview-info">
<div class="info-card">
<h3>Image Details</h3>
<div id="image-details">
<p>Original Size: <span id="original-size"></span></p>
<p>Scaled Size: <span id="scaled-size"></span></p>
<p>Number of Slices: <span id="slice-count"></span></p>
<p>Slice Resolution: <span id="slice-resolution"></span></p>
</div>
</div>
<div class="options">
<div class="toggle-container">
<label class="toggle">
<span class="toggle-label">High Resolution Mode</span>
<input type="checkbox" id="high-res-toggle" checked>
<span class="toggle-slider"></span>
</label>
<p class="toggle-description">Uses maximum possible resolution from your image</p>
</div>
</div>
<div class="actions">
<button id="process-btn" class="primary-btn">Generate Slices</button>
<button id="reset-btn" class="secondary-btn">Reset</button>
</div>
</div>
</div>
</div>
<div class="result-container" id="result-container">
<h2>Sliced Images</h2>
<div class="slices-preview" id="slices-preview"></div>
<div class="download-section">
<button id="download-btn" class="primary-btn">
<span class="btn-text">Download All Slices as ZIP</span>
<span class="btn-loader"></span>
</button>
</div>
</div>
<div class="analogvibes-card">
<div class="analogvibes-image">
<img src="images/presets.jpg" alt="Lightroom Presets Preview">
</div>
<div class="analogvibes-content">
<h3>Analog Vibes Vol. 2 Lightroom Presets</h3>
<p>If you like this free web tool I made, please consider checking out my Lightroom Presets. Edit your digital images with a dreamy pastel look you only thought was possible on film!</p>
<a href="https://futc.gumroad.com/l/analogvibes2/panosplitter" class="cta-button" target="_blank">Get A Discount!</a>
</div>
</div>
<footer>
<div class="footer-content">
<p class="footer-info">Created by <a href="https://futc.de" target="_blank">FUTC</a> | All processing happens in your browser</p>
<div class="footer-links">
<a href="https://instagram.com/futc.photography" target="_blank" class="social-link" aria-label="Follow us on Instagram">
<img src="images/instagram-icon.svg" alt="Instagram" class="instagram-icon" width="18" height="18">
</a>
<a href="https://futc.de/impressum.html" target="_blank" class="legal-link">Impressum</a>
<a href="https://futc.de/datenschutz.html" target="_blank" class="legal-link">Privacy Policy</a>
</div>
</div>
</footer>
</div>
<script src="script.js"></script>
</body>
</html>