1<!DOCTYPE html> 2<html lang="en"> 3<head> 4<title>65×24 iPhone panoramic camera</title> 5<link rel="icon" type="image/png" href="favico.png" /> 6<meta charset="UTF-8"> 7 8<meta name="description" content="65x24 iPhone panoramic camera"> 9<meta property="og:title" content="65x24 iPhone panoramic camera"> 10<meta property="og:image" content="doc/1_hero.jpg"> 11 12<meta name="apple-itunes-app" content="app-id=6447838860"> 13
14<script defer src='https://jellystat.com/static/embed.js' onload='jellystat_init("018bdee8768a40dda16a7d32167d724a");'></script>
14 15<style> 16 @font-face { 17 font-family: "InputMono-Regular"; 18 src: url('assets/InputMono-Regular.ttf'); 19 } 20 21 body { 22 background: black; 23 color: white; 24 font-family: "InputMono-Regular"; 25 line-height: 16pt; 26 27 margin-left: 10px; 28 margin-right: 10px; 29 } 30 31 #content { 32 margin-left: auto; 33 margin-right: auto; 34 35 width: 800px; 36 37 text-align: center; 38 39 font-size: 16pt; 40 line-height: 22pt; 41 } 42 43 #subtitle { 44 margin-top: -32px; 45 } 46 47 a { 48 color: white; 49 } 50 51 #app-preview { 52 position: relative; 53 } 54 55 #device-frame { 56 position: absolute; 57 top: 0; 58 left: 0; 59 } 60 61 #device-screen { 62 margin-top: 30px; 63 } 64 65 .white_bg_link { 66 background-color: white; 67 color: black; 68 } 69 70 .small-text { font-size: 12pt; } 71 .greyed-out { color: #888; } 72 .review { text-align: left; } 73 .star-rating { font-size: 36pt; } 74</style> 75
76<script> 77 const sampleCount = 5; 78 let sampleNumber = 1; 79 80 const sampleDisplayDuration = 5_000; 81 const sampleFadeDuration = 1000.0; 82 const sampleFadeSteps = 60.0; 83 84 const preloadedImages = [] 85 86 function preloadImages() { 87 for (let i = 1; i<=sampleCount; i++) { 88 let img = new Image(); 89 img.id = "device-screen"; 90 img.src = `assets/sample${i}.jpg`; 91 img.width = 737; 92 img.alt = "an example screen of what the camera65x24 app looks like"; 93 img.style.opacity = 0; 94 preloadedImages.push(img); 95 } 96 } 97 98 function nextSample() { 99 sampleNumber += 1; 100 if (sampleNumber > sampleCount) { sampleNumber = 1; } 101 102 document.getElementById("device-screen").replaceWith(preloadedImages[sampleNumber-1]); 103 } 104 105 function fade(remainingSteps, totalSteps, fadeIn=true) { 106 const opacity = fadeIn ? 1.0 - (remainingSteps/totalSteps) : remainingSteps/totalSteps; 107 108 document.getElementById("device-screen").style.opacity = opacity; 109 110 if (remainingSteps > 0) { 111 requestAnimationFrame(() => fade(remainingSteps - 1, totalSteps, fadeIn)); 112 } else { 113 if (fadeIn) { 114 scheduleImageFadeOutTimer(); 115 } else { 116 nextSample(); 117 scheduleImageFadeInTimer(); 118 } 119 } 120 } 121 122 function scheduleImageFadeOutTimer() { 123 setTimeout(() => fade(sampleFadeSteps, sampleFadeSteps, false), sampleDisplayDuration); 124 } 125 126 function scheduleImageFadeInTimer() { 127 requestAnimationFrame(() => fade(sampleFadeSteps, sampleFadeSteps, true)); 128 } 129 130 function updateForLang() { 131 if (/^fr\b/.test(navigator.language)) { 132 document.getElementById("appstore-badge").src = "appstore_fr.png"; 133 document.getElementById("subtitle").innerHTML = "un appareil photo panoramique pour iPhone"; 134 } else if (/^ja\b/.test(navigator.language)) { 135 document.getElementById("appstore-badge").src = "appstore_jp.png"; 136 document.getElementById("subtitle").innerHTML = "iPhoneã®ããã©ãã«ã¡ã©"; 137 } 138 } 139 140 window.onload = function() { 141 //updateForLang(); 142 preloadImages(); 143 scheduleImageFadeInTimer(); 144 } 145</script>
145 146 147</head> 148<body> 149 150<div id="content"> 151 <img width="150" src='assets/65x24_icon_new.png'> 152 <div id="subtitle">panoramic camera for iPhone<br>MARK II</div> 153 <br> 154 155 <div id='app-preview'> 156 <img id='device-screen' width="737" style="opacity: 0;" src='assets/sample1.jpg' alt="an example screen of what the camera65x24 app looks like"> 157 <img id='device-frame' width="800" src='assets/iPhone 15 Pro Max - Natural Titanium - Landscape.png' alt="an iPhone device bezel, framing the example app screen"> 158 </div> 159 <br><br> 160 161 <a href='https://apps.apple.com/us/app/65-24-mk0/id6447838860' target='_blank' onclick="jellystat_event('clicked_app-store-link');"><img id="appstore-badge" width="200" src='assets/appstore.png' alt="badge for the Apple App Store"></a> 162 <br><br> 163 164 65×24 is a meticulously designed camera app for your iPhone, 165 conceived to compose & capture photographs in the iconic 65:24 aspect ratio, 166 first used by the legendary <a href='https://www.hasselblad.com/about/history/xpan/'>Hasselblad XPan</a>/<a href='http://camera-wiki.org/wiki/Fujifilm_TX-1'>Fujifilm TX-1</a> film cameras. 167 <br><br> 168 169 It is free to <a href='https://apps.apple.com/us/app/65-24-mk0/id6447838860' target='_blank' onclick="jellystat_event('clicked_app-store-link');">download on the App Store</a>, with advanced processing and settings unlockable through a one time in app purchase. 170 <br><br> 171 172 ☉ 173 <br><br> 174 175 <span class='star-rating'>â â â â â </span> 176 <br> 177 <span class='small-text'>"I'm in love with the X-Pan format and I'm so happy I found this app. It's an excellent execution of the concept." 178 <span class='greyed-out'>- ab2283, Germany</span></span> 179 <br><br> 180 181 <span class='star-rating'>â â â â â </span> 182 <br> 183 <span class='small-text'>"Waited a long time for a developer to produce a decent XPan emulator. There are others, but this one has the best features." 184 <span class='greyed-out'>- AliSnapper, United Kingdom</span></span> 185 <br><br> 186 187 ☉ 188 <br><br> 189 190 65×24 packs unique features like fully modular controls, a flexible processing recipe system, and an immersive, fullscreen shooting mode that makes your iPhone feel like a dedicated panoramic camera. 191 <br><br> 192 193 It also supports advanced iPhone photography features, such as 48 MP capture, Fusion Camera support, and Camera Control on compatible iPhone models. 194 <br><br> 195 ☉ 196 <br><br> 197 198<!-- watch the<br> 199 <a class='white_bg_link' href='https://youtube.com/watch?v=6__mdUnsMOI' target='_blank' onclick="jellystat_event('clicked_intro-video');">INTRO VIDEO</a> 200 <br><br> 201 --> 202 read the<br> 203 <a class='white_bg_link' href='/doc' target='_blank' onclick="jellystat_event('clicked_manual');">USER'S MANUAL</a> 204 <br><br> 205 206 ☉ 207 <br><br> 208 209 need to reach out?<br> 210 <a href='mailto:[email protected]' target='_blank' onclick="jellystat_event('clicked_contact');">[email protected]</a> 211 <br><br> 212 213 <!-- <a href='https://heliographe.studio/press/65x24-presskit' target='_blank' onclick="jellystat_event('clicked_presskit');">press kit</a> --> 214 215 <br><br> 216 217 ☉ 218 <br><br> 219 220 <img width='100px' src='assets/heliographe_logo.png'> 221 <br> 222 made by<br> 223 <a href='https://heliographe.studio' target='_blank' onclick="jellystat_event('clicked_heliographe');">Héliographe</a> 224 225 <br><br> 226</div> 227 228</body> 229</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.