Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Snap Scope – Visualize Lens Focal Length Distribution from EXIF Data (shj.rip)
13 points by kan02134 14 days ago | hide | past | favorite | 12 comments
Hey HN, I built this tool because I wanted to understand which focal lengths I actually use when taking photos. It's a web app that analyzes EXIF data to visualize focal length distribution patterns.

While it's admittedly niche (focused specifically on photography), I think it could be useful for photographers trying to understand their lens usage patterns or making decisions about lens purchases.

Features: Client-side EXIF data processing (no server uploads/tracking) / Handles thousands of photos at once / Clean visualization with shareable summaries

This tool supports most RAW formats, but you might occasionally encounter files where EXIF extraction fails. In such cases, converting to more common formats like JPEG usually resolves the issue.

Try it out: https://snap-scope.shj.rip/?lng=en

Source: https://github.com/Gumball12/snap-scope




Man, this would be so much more intuitive as a command line tool that either generates a HTML file with the summary, or a CSV file with filename, focal length. Dragging thousands of photos into the browser window seem very sketchy (OK I just tested, Vivaldi doesn't like me dragging dozens of files onto it, I can do 2 files, but if I try dragging about 20 files it just loads one of the images, replacing the page).

I can imagine a CLI wouldn't even read the entire file (I have 15MB heavy images), just the few KB's at the beginning to find the Exif tag.


Thank you for such insightful feedback! I should clarify that this tool was designed as a web-based solution to avoid the traditional installation or server upload requirements, aiming for maximum accessibility. While I hadn't considered a CLI approach initially, you make an excellent point about its efficiency. However, I'm still weighing the trade-off between performance and accessibility.

I completely understand your concerns about the drag-and-drop stability with thousands of files. The issue you're experiencing with Vivaldi might be related to this. Would you mind trying the file picker button instead? I've been unable to reproduce the issue on my Apple M1 MacBook with the same browser, which makes it challenging to provide an immediate fix. I apologize for the inconvenience.

Regarding EXIF extraction, we're using the 'exifr' npm library, which actually works exactly as you suggested - it only reads the beginning portion of the file to extract EXIF data, even in the browser. You can learn more about it here: https://www.npmjs.com/package/exifr


Makes you wonder if you could chop the start of the file, upload it, and get the result?


Would you have an example of this tool being used ?


Let me share my experience. This tool helped me objectively understand which focal lengths I actually prefer. It was particularly valuable when I was considering new lens purchases. For instance, you might choose to invest in a lens that covers your most-used focal lengths, or alternatively, explore new creative possibilities with focal lengths you rarely use. I see this tool as a small compass that helps us better understand and develop our photography journey.


Can anyone speak to the image processing used? In particular, how is depth inferred from a single 2D image? It seems to me one would need both depth and angle over the field of view to back out the lens focal length. The EXIF format doesn't seem to contain meta data helpful to the focal length calculation.


As @nanoanderson mentioned, we use the "FocalLengthIn35mmFormat" tag from EXIF. Let me explain why: since cameras have different sensor sizes, comparing actual focal lengths directly can be misleading (https://en.wikipedia.org/wiki/Crop_factor#Introduction). By using the 35mm film equivalent, we can compare field of views across all cameras on the same scale. For instance, a 50mm lens on a crop sensor camera shows a similar field of view to a 75mm lens on a full-frame camera.

We're using the 'exifr' library for EXIF data extraction: https://www.npmjs.com/package/exifr


There is a FocalLength tag in the EXIF spec. https://exiftool.org/TagNames/EXIF.html


This sounds really cool, I'm less then an amateur photographer (I have a weird camera that I like writing software for.) But most of my images are stripped of Exif data as others have mentioned, could you provide an example on the page that I could test it out with?


Thanks for the suggestion! While I initially considered providing sample images, I realized they might not effectively convey the tool's real value, which is analyzing your personal shooting patterns.

Perhaps you could try it with some smartphone photos? Smartphone cameras typically include EXIF data, making them perfect for testing the tool. Even a few casual photos from your phone should give you a good sense of how the tool works. This way, you can experience the functionality with your own real-world images rather than pre-prepared samples.


Definitely a need for this. I built something similar years ago from hacky scripts so nice to see it done properly.


Thank you! It's really encouraging to hear this. When I shared it with a small photography community, many said this was exactly the kind of information they'd been wanting to see. It makes me feel that creating this tool was truly worthwhile, knowing it addresses a real need in the photography community.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: