# Camera Spec Card Generator **Turn any photo or Siril FITS file into a shareable camera spec card.** Drop your image, get a beautifully formatted 1080ร—1080 overlay with your shooting data โ€” no account, no upload, no server. Just one HTML file. ๐Ÿ”— **[Try it live โ†’ justinoros.github.io/spec-card](http://justinoros.github.io/spec-card)** --- ![Spec Card Example](screenshot.jpg) --- ## Features - **Drag & drop or browse** โ€” JPEG, PNG, TIFF, CR2 RAW, and FITS files - **Auto-reads metadata** โ€” EXIF for camera photos, FITS headers for Siril exports - **Astrophotography fields** โ€” camera, telescope, lens, focal length, aperture, filter, shutter, frames stacked, total integration, ISO/gain, object, location, Bortle scale, and date - **Smart background handling** โ€” images without EXIF data are used as the card background without overwriting your spec fields - **Click any field on the card** to edit it inline, or use the edit panel below - **Live updates** โ€” every keystroke instantly re-renders the card - **Two-column layout** โ€” automatically activates when 8+ fields are populated - **Text size and background blur sliders** - **Custom icon and text colors** via hex input - **Editable header and footer** โ€” swap "SPEC CARD" for your target name, and the footer for your IG handle, YouTube, or website - **Downloads as a timestamped 1080ร—1080 JPEG** โ€” `camera-spec-card-YYYYMMDD-HHMMSS.jpg` - **Zero dependencies at runtime** โ€” everything runs in the browser, nothing is sent to a server --- ## Usage ### Option 1 โ€” Use the hosted version Visit **[justinoros.github.io/spec-card](http://justinoros.github.io/spec-card)** โ€” no installation needed. ### Option 2 โ€” Self-host or run locally 1. Clone or download this repo 2. Place your own background image as `bg.jpg` in the same folder (optional) 3. Open `index.html` in any modern browser โ€” that's it ``` spec-card/ โ”œโ”€โ”€ index.html โ† the entire app โ””โ”€โ”€ bg.jpg โ† background wallpaper (optional, replace with your own) ``` --- ## Supported File Types | Format | Metadata Source | Image Preview | |--------|----------------|---------------| | JPEG / PNG | EXIF | โœ… Used as card background | | TIFF (8-bit / 16-bit) | TIFF IFD tags | โœ… Used as card background | | CR2 / CR3 RAW | Embedded EXIF | โœ… Embedded JPEG preview extracted | | FITS / FIT | FITS header keywords | โŒ Gradient placeholder (drop a separate image to set background) | > **TIFF note:** 32-bit float TIFFs (Siril's default linear export) are not supported. Export as 16-bit or 8-bit TIFF from Siril before use. --- ## FITS Keywords Read When a `.fit` or `.fits` file is loaded, the following header keywords are extracted automatically: | Card Field | FITS Keywords | |---|---| | Camera | `INSTRUME` | | Lens | `LENS`, `OPTICS` | | Focal Length | `FOCALLEN`, `FOCAL` | | Aperture | `FOCRATIO`, `APERTURE` | | Filter | `FILTER`, `FILT` | | Shutter / Exposure | `EXPTIME`, `EXPOSURE` | | Frames Stacked | `STACKCNT`, `NCOMBINE`, `NFRAMES` | | Total Integration | `TOTALEXP` | | ISO / Gain | `ISO`, `GAIN` | | Object | `OBJECT`, `TARGET` | | Location | `SITELAT` + `SITELONG` | | Bortle Scale | `BORTLE`, `SQMVALUE` | | Date | `DATE-OBS`, `DATE` | Any fields not present in the file can be filled in manually using the edit panel. --- ## Recommended Workflow for Astrophotography 1. **Drop your background image** (exported PNG/TIFF from Siril, or any photo) โ€” used as the blurred background 2. **Drop your FITS file** โ€” populates all available spec data without replacing the background 3. **Fill in any missing fields** in the edit panel (Bortle, location, total integration, etc.) 4. **Adjust** text size, blur, and colors to taste 5. **Download** your 1080ร—1080 spec card and share alongside your image --- ## Customization All fields on the card are editable โ€” tap directly on the card or use the panel below it: - **Header** โ€” defaults to `SPEC CARD`, change to your target name or session title - **Footer** โ€” defaults to `@FateOfAstrophilia`, change to your IG, YouTube, website, or anything - **Icon color** โ€” any 6-digit hex (default `#c8a96e`) - **Text color** โ€” any 6-digit hex (default `#e8eaf0`) - **Text size** โ€” slider from 60% to 140% - **Background blur** โ€” slider from 0px (sharp) to 60px --- ## Built With - Vanilla HTML, CSS, and JavaScript โ€” no framework, no build step - [EXIF.js](https://github.com/exif-js/exif-js) โ€” JPEG/PNG EXIF parsing - [UTIF2](https://github.com/photopea/UTIF.js) โ€” TIFF decoding - Custom binary EXIF parser for CR2 RAW files - Custom FITS header parser --- ## License MIT โ€” free to use, fork, and modify. --- *Made with โค๏ธ by [Justin Oros](https://www.instagram.com/FateOfAstrophilia) ยท [@FateOfAstrophilia](https://www.instagram.com/FateOfAstrophilia)*