Capture.
Measure.
Compare.
Extract colors from fabric photos as HEX. Measure point-by-point with a grid and eyedropper. Correct lighting bias with white-leveling. Zero permissions. No internet. Stays on-device.
Four things, on purpose.
No login. No cloud. No AI. No search. No share. Just color, recorded.
Pick a photo
Uses the system photo picker. No storage or camera permission required.
5 representative colors
AndroidX Palette auto-extracts the most-used colors and shows them as HEX.
Grid & eyedropper
3/5/7 grid for average color by region. Tap to sample a precise point.
White-leveling
Pick a white reference and the lighting bias is corrected — raw and corrected both kept.
Notes & save
Attach fabric name, vendor, material. Find them again from the list.
HEX copy
Tap a color chip to copy to clipboard. Straight into your design tool.
Measured ≠ perceived.
The pixel value a sensor records and the color your eye reads are not the same. Gloss, texture, warmth, and light all sit in between. Color Marker is the tool for collecting that gap as data.
MEASURED COLOR
The raw value the sensor read. Grid averages, eyedropper points, white-leveling corrections — raw and corrected kept side by side. Reproducible numbers.
PERCEIVED COLOR
What the eye actually sees, shaped by gloss, texture, warmth, and lighting. v1 captures it in notes; v2 will add gloss / texture / warmth fields for a perceptual mapping.
Recording and comparing that gap is the actual subject of this app.
Three steps.
From a single photo to saved colors in about 30 seconds.
Pick a photo
Add photo on the home screen → choose a fabric image from your gallery.
Measure color
Review the 5 auto-extracted colors and grid readings. Use the eyedropper for precision.
Note & save
Add a memo and save. Tap a HEX chip in the list to copy.
Measurement log.
What the 33 bundled samples look like after first-run auto-seeding (example).
Specs.
Small footprint, minimum permissions.
Android 8.0+
minSdk 26 / targetSdk 34. Jetpack Compose · Material 3.
Zero
System photo picker only. No camera, no storage, no internet permission requested.
Local only
JSON-backed EntryStore. No remote server, no cloud, no analytics.