clone

a photo toolkit for your phone that never uploads: fuji film looks for raw files, social crops, error level analysis

main
gudpics / index.html
index.html 6.3K
1<!doctype html>2<html lang="en">3<head>4 <meta charset="utf-8">5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">6 <script src="./viewport.js"></script>7 <meta name="theme-color" content="#000000">8 <meta name="description" content="Photo tools that run on your phone. Nothing is uploaded.">9 <meta name="apple-mobile-web-app-capable" content="yes">10 <meta name="mobile-web-app-capable" content="yes">11 <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">12 <meta name="apple-mobile-web-app-title" content="gud.pics">13 <link rel="manifest" href="./manifest.webmanifest">14 <link rel="icon" href="./assets/icon.svg" type="image/svg+xml">15 <link rel="apple-touch-icon" href="./assets/icon-192.png">16 <link rel="stylesheet" href="./style.css">17 <title>gud.pics</title>18</head>19<body>20 <main class="home">21 <h1 class="home-title">gud.pics</h1>2223 <ul class="tools">24 <li class="tool-card">25 <button class="tool-info" data-info="perspective" aria-label="About Perspective"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg></button>26 <a class="tool-link" href="./perspective">27 <span class="tool-glyph"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7"/><path d="M14 15H9v-5"/><path d="M16 3h5v5"/><path d="M21 3 9 15"/></svg></span>28 <h2>Perspective</h2>29 </a>30 </li>31 <li class="tool-card">32 <button class="tool-info" data-info="fuji" aria-label="About Fuji"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg></button>33 <a class="tool-link" href="./fuji">34 <span class="tool-glyph"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="m14.31 8 5.74 9.94"/><path d="M9.69 8h11.48"/><path d="m7.38 12 5.74-9.94"/><path d="M9.69 16 3.95 6.06"/><path d="M14.31 16H2.83"/><path d="m16.62 12-5.74 9.94"/></svg></span>35 <h2>Fuji</h2>36 </a>37 </li>38 <li class="tool-card">39 <button class="tool-info" data-info="social" aria-label="About Social"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg></button>40 <a class="tool-link" href="./social">41 <span class="tool-glyph"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect width="20" height="16" x="2" y="4" rx="2"/><path d="M12 9v11"/><path d="M2 9h13a2 2 0 0 1 2 2v9"/></svg></span>42 <h2>Social</h2>43 </a>44 </li>45 <li class="tool-card">46 <button class="tool-info" data-info="ela" aria-label="About ELA"><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><circle cx="12" cy="12" r="10"/><path d="M12 16v-4"/><path d="M12 8h.01"/></svg></button>47 <a class="tool-link" href="./ela">48 <span class="tool-glyph"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M3 7V5a2 2 0 0 1 2-2h2"/><path d="M17 3h2a2 2 0 0 1 2 2v2"/><path d="M21 17v2a2 2 0 0 1-2 2h-2"/><path d="M7 21H5a2 2 0 0 1-2-2v-2"/><circle cx="12" cy="12" r="3"/><path d="m16 16-1.9-1.9"/></svg></span>49 <h2>ELA</h2>50 </a>51 </li>52 </ul>5354 <section class="list" aria-label="App">55 <div class="rows">56 <button class="row" id="install" hidden>Install<svg class="chev" width="8" height="14" viewBox="0 0 8 14" aria-hidden="true"><path d="M1 1l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>57 <button class="row" id="install-ios" hidden>Add to Home Screen<svg class="chev" width="8" height="14" viewBox="0 0 8 14" aria-hidden="true"><path d="M1 1l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>58 <button class="row" id="about">About<svg class="chev" width="8" height="14" viewBox="0 0 8 14" aria-hidden="true"><path d="M1 1l6 6-6 6" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg></button>59 </div>60 </section>61 </main>6263 <dialog id="tool-sheet" class="sheet" aria-labelledby="tool-title">64 <div class="sheet-body" tabindex="-1" autofocus>65 <div class="grabber"></div>66 <div class="sheet-head"><h2 id="tool-title"></h2><button class="sheet-close" data-close>Done</button></div>67 <div id="tool-text"></div>68 </div>69 </dialog>70 <dialog id="info" class="sheet" aria-labelledby="info-title">71 <div class="sheet-body" tabindex="-1" autofocus>72 <div class="grabber"></div>73 <div class="sheet-head"><h2 id="info-title">About</h2><button class="sheet-close" id="close-info">Done</button></div>74 <p>Small photo tools that run on your device. Nothing is uploaded. <span id="offline-status"></span></p>75 <h3>Install</h3>76 <p id="install-help">iPhone: Safari, Share, Add to Home Screen. Android: Install app.</p>77 <h3>Open source</h3>78 <p>AGPL. Built on darktable, LibRaw and other open projects, credited in the notice. Independent, not affiliated with any camera maker.</p>79 <div class="links"><a href="https://github.com/FelineStateMachine/gudpics" target="_blank" rel="noopener">Source</a><a href="./NOTICE.md">Notice</a><a href="./LICENSES/AGPL-3.0.txt">AGPL</a><a href="./LICENSES/GPL-3.0.txt">GPL</a></div>80 </div>81 </dialog>8283 <script type="module" src="./home.mjs"></script>84</body>85</html>