The QR code is on your screen, not in front of your camera
Every scanning tutorial assumes the same setup: a printed QR code, a phone, a camera. Reality is often different. The train ticket arrives as a PDF by email, the rental’s Wi-Fi code comes as a photo in a chat thread, the restaurant menu QR is displayed… on the phone screen itself. In all these cases, pointing the camera solves nothing: you need to decode an image file.
Scanning from an image does exactly that: instead of analyzing the camera’s video stream, the decoder reads the pixels of a file you import — a screenshot, a photo, a downloaded picture.
The three real-world cases tutorials forget
The QR code shown on your own screen
A website displays a code to scan “with your phone”… while you’re already viewing the page on it. The fix: take a screenshot (usually power + volume buttons), then import the image into the scanner. No second device required.
The screenshot received in a chat
A relative sends you the rental’s Wi-Fi QR code, or a colleague forwards an access code as a photo. Save the image to your gallery or files, then import it. The decoded content appears in plain text: URL, Wi-Fi credentials, or raw text.
The poster or package you photographed
You snapped a code “for later.” Rather than zooming into the photo hoping an app will read it, import it: the decoder works directly on the recorded pixels, often sharper than what the gallery’s pinch-zoom suggests.
What the decoder understands
The same engine that reads the camera reads your image: QR codes, of course, but also the most common 1D barcodes — EAN-13, EAN-8, UPC-A, Code 128, Code 39, ITF — plus Data Matrix, Aztec and PDF417 on the ZXing path. That means an imported photo of a product label, a boarding pass, or an event badge decodes just the same: the raw content appears, whatever the symbology.
Step by step
- Get the image: screenshot, saved from the messaging app, or a photo already taken.
- Open the FlashScan Pro scanner and tap “Import an image” — the upload button next to the camera start.
- Pick the file. Decoding starts immediately — nothing is sent to a server.
- The decoded content is shown in plain text: you can copy it, and if it’s a URL, open it in a new tab. An
http://link is flagged as insecure before opening.
Two limits worth knowing: the file must be an image (any image/* type: PNG, JPEG, WebP…) and weigh at most 20 MiB — a decoded bitmap takes roughly 4 bytes per pixel in memory, and that bound keeps decoding responsive on phones.
Getting a decodable image
Decoding quality is decided before the import:
- On screenshots: crop wide rather than tight — keep the clear band around the pattern (the “quiet zone”) and a bit of context; compressed pixels at the code’s edge hurt detection.
- On photos: fill the frame with the code without cutting it, avoid backlight and glare on laminated surfaces; a little distance helps focus more than zoom.
- From a PDF: capture the code zoomed on screen rather than exporting a thumbnail — the more pixels the pattern covers in the image, the better the decoder works.
Why local decoding matters more here
Scanning an image means handing a file — potentially a personal one — to a tool. An email screenshot may contain a name, a case reference, an address. The old “online QR scanners” worked by uploading the image to a server that decoded it and sent the result back: the file left your device.
FlashScan Pro takes the other path: decoding happens on-device, through the browser’s BarcodeDetector API when available, or through the ZXing decoder loaded in the page otherwise. The image never leaves — verifiable in the developer tools’ Network tab, as detailed in scanning without uploads. Once the page is loaded, scanning even works offline.
If the code won’t decode
- Crop it: remove the clutter around the code; a larger pattern in the image improves detection.
- Check contrast: dark modules on a light background, no glare. A photo of a poster under neon light may need cropping or retouching.
- Watch cropped screenshots: if the code’s white border (the “quiet zone”) is trimmed away, some decoders fail.
- It might be 1D: the scanner also reads barcodes (EAN-13, Code 128…) — handy for decoding a product number from a photo of a label.
Going further
Image scanning shares the same architecture as camera scanning: the technical details (BarcodeDetector, supported formats, offline behavior) are in scanning without uploads. And if the decoded content looks suspicious, don’t open it straight away — the reflexes are in spotting a malicious QR code.