Resize and Convert. A tiny iOS app that resizes and converts photos, saving the outputs to a "Recon" album in your Photos library. Built with SwiftUI for iOS 26.
Free. Offline. On-device. No accounts, no analytics, no tracking, no network access at all.
A small, fast utility to resize and convert photos on a phone. Every other option I tried was tangled in adverts or full of features I didn't need. Does one job, on-device, and then gets out of the way.
- Pick one or more photos from your library.
- Choose an output format — JPEG, WebP, AVIF, PNG, or TIFF.
- For the lossy formats, pick a quality level.
- Pick a resize mode:
- Keep original — convert without resizing.
- Percentage — scale each photo by a percent.
- Long edge — cap the longest side to a pixel size.
- Short edge — cap the shortest side to a pixel size.
- Tap Process. Converted copies land in the Recon album in Photos with EXIF metadata preserved (camera model, capture time, GPS, and so on).
- Five output formats via the system ImageIO stack — no third-party libraries, nothing to update.
- Four resize modes: keep original, percentage, cap long edge, cap short edge.
- Preserves EXIF metadata; rewrites orientation so every output renders the right way up regardless of how the source was tagged.
- Processes batches in parallel, bounded to the device's active CPU count.
- Cancel mid-batch — any photos already saved stay in the album (no rollback, because the files are yours).
- Light and dark themes with a lime accent.
- iPhone and iPad in every useful orientation.
- Haptics on step changes, slider release, completion, and errors.
Recon never makes a network request. No analytics SDK, no telemetry, no crash reporter, no accounts. Photos access is requested twice:
- Read-write so it can resolve the images you pick into the underlying asset records needed for processing.
- Add-only so it can write the converted copies back into the Recon album.
Both are standard iOS system prompts. Converted files only leave the app through the Photos library.
- iOS 26.4 or later.
- iPhone or iPad.
Open Recon.xcodeproj in Xcode 16 or later, or build from the command line:
xcodebuild -project Recon.xcodeproj -scheme Recon \
-destination 'platform=iOS Simulator,name=iPhone 17,OS=26.4' \
-configuration Debug buildxcodebuild -project Recon.xcodeproj -scheme Recon \
-destination 'platform=iOS Simulator,name=iPhone 17,OS=26.4' testEach photo is loaded from PhotoKit, downsized with CGImageSourceCreateThumbnailAtIndex (which also bakes the EXIF rotation into the pixels in a single pass), re-encoded with CGImageDestination at the chosen format and quality, and written to the Recon album in a single atomic PhotoKit transaction. Batches fan out across a TaskGroup capped at the device's CPU count. Everything happens on-device.
- DESIGN.md — visual design spec: tokens, typography, component sizes, screen flow.
- AGENTS.md — onboarding notes for anyone (human or AI) picking up the codebase.
- TODO.md — what's on the wish list.
MIT © 2026 Dave Williams.