Local image workflow
Image file checks: format, dimensions, hashes and defined pixel differences
Start with the question the file needs to answer. A container label, an exact byte identity and a decoded pixel comparison produce different evidence; keep their outputs and limitations separate.
18 October 2026 · Check AI Free
Choose a check from the task
| Your question | First tool | Output to keep |
|---|---|---|
| Is this .jpg really JPEG? | Image file type checker | Signature, supported structural diagnostics, extension/MIME comparison |
| Will its displayed size or bytes fit a requirement? | Image dimensions checker | Encoded/display width and height, EXIF orientation, exact pixel count and stated maximum conditions |
| Did I receive the exact same file bytes? | Image file SHA-256 | Digest and byte length; optional expected digest result |
| Which selected files are exact copies? | Find exact duplicate files | Per-file status and groups confirmed by hash, size and byte checks |
| Where do two decoded images differ? | Compare image files | Independent byte result, native RGBA status, change bounds and difference PNG |
- Identify actual container structure — Deep supported JPEG/PNG/WebP checks; recognized other signatures stay unsupported.
- Read oriented dimensions without pixel decoding — Unknown orientation and too-large decode bounds remain visible.
- Compute a local SHA-256 — No identity/authorship certification is added.
- Group exact local copies — Sequential bounded batch; no disk deletion or visual-similarity inference.
- Compare native sRGB RGBA — Fixed orientation, alpha, color-space and size policy; no resizing.
Three defined scenes
These scenes share a project-authored 8 × 6 RGBA chart and source-defined variants. They are not independent photographs or an accuracy study. The actual canonical files were selected and compared in Chromium, including a newly downloaded text replacement. The downloadable summary computes byte facts on the server and labels independent Pillow expectations; it does not run Canvas or supply a reading of files you later select.
| Scene | Reference output | Decision |
|---|---|---|
| S-H05-BYTES | Two differently named copies group together; a same-name metadata variant does not | Use exact-file groups when byte identity is the requirement. |
| S-H05-METADATA | 338 versus 330 bytes; different hashes; identical defined Chromium RGBA, independently confirmed by Pillow | A file-byte change alone does not locate a pixel change. |
| S-H05-PIXEL | One changed red sample at (5, 3); delta 15; 1 × 1 change bounds | Use native-size coordinates and the difference map to locate the defined change. |
- Download the original synthetic RGBA PNG — Project-authored 8 × 6 PNG, 338 bytes. Four colored regions, alpha controls and one Description tEXt field: Fictional metadata; pixel samples are unchanged. This canonical download differs from the separate 266-byte built-in hash sample.
- Download the verified metadata text replacement — 330-byte output replacing original.png chunk-2 Description with “Edited locally for the SHA-256 exercise.” using tEXt. Original IDAT is retained; independent decoded samples match.
- Download the one-pixel difference control — Same 8 × 6 chart in a 266-byte PNG without the Description field. The red channel at zero-based (5, 3) changes from 240 to 255; independent Pillow locates exactly one changed pixel.
- Download the three-scene summary — Build-computed hashes, headers and byte groups with separately labeled Pillow expectations. The summary does not run Canvas; selected files receive their own browser report.
Carry the evidence through a handoff
Step 1
Inspect type and limits
Keep the received original. Read its signature and actual structure before relying on its extension; compare encoded and valid-EXIF display dimensions with the next operation's byte/pixel limits.
Step 2
Use identity or pixels according to the need
Hash/group files for exact bytes. For pixel questions, compare full native sRGB RGBA after the stated orientation policy; do not resize to thumbnails to manufacture equal dimensions.
Step 3
Export the scope with the result
Review local reports before sharing. Duplicate reports exclude filenames by default. Pixel reports retain hashes, decode states, fixed conditions and limited changed values, while a difference PNG itself can reveal part of the image's geometry.
Keep failure and uncertainty visible
A malformed container, unreadable file, unsupported signature, hash error or cancellation is not an empty or successful equality result. One batch failure does not erase the other real rows. Pixel decoding is limited to static JPEG/PNG/WebP, 20 MiB per file, 16 million pixels and 8192 pixels per side, with animation and multi-picture JPEG rejected.
The RGBA comparison includes alpha and normalizes fully transparent RGB to zero. It applies valid EXIF orientation once, ignores XMP orientation and uses the browser's sRGB color pipeline for embedded profiles. Different native dimensions remain not compared. This is neither perceptual similarity nor original sensor-pixel, authorship, file-safety or provenance verification.
- NIST FIPS 180-4, August 2015 — Fixed Secure Hash Standard used for SHA-256. A content digest identifies bytes; this workflow does not add identity authentication or signature validation.
- WHATWG HTML Canvas source, revision de953a7cf052 — Primary specification snapshot checked 18 October 2026, including Canvas color spaces and ImageData. The site's native-size, 8-bit sRGB RGBA and transparent-RGB policy is stated separately.
- The fixed original, re-encode and screenshot experiment — Eight licensed Commons photographs and specified local transforms. Its historical 800 × 600 Chromium captures are known screenshots because the capture process was recorded, not because they use PNG.
Sources and reproducible inputs
- Download the original synthetic RGBA PNG — Project-authored 8 × 6 PNG, 338 bytes. Four colored regions, alpha controls and one Description tEXt field: Fictional metadata; pixel samples are unchanged. This canonical download differs from the separate 266-byte built-in hash sample.
- Download the verified metadata text replacement — 330-byte output replacing original.png chunk-2 Description with “Edited locally for the SHA-256 exercise.” using tEXt. Original IDAT is retained; independent decoded samples match.
- Download the one-pixel difference control — Same 8 × 6 chart in a 266-byte PNG without the Description field. The red channel at zero-based (5, 3) changes from 240 to 255; independent Pillow locates exactly one changed pixel.
- NIST FIPS 180-4, August 2015 — Fixed Secure Hash Standard used for SHA-256. A content digest identifies bytes; this workflow does not add identity authentication or signature validation.
- W3C Web Cryptography API, 26 January 2017 — Fixed Recommendation defining SubtleCrypto.digest and SHA-256. The tool uses the browser API with no substitute hash algorithm.
- W3C PNG Third Edition, 24 June 2025 — Fixed primary specification for the PNG signature, chunks, CRC, image dimensions, alpha and embedded metadata. A subset structure check does not certify full conformance.
- WHATWG HTML Canvas source, revision de953a7cf052 — Primary specification snapshot checked 18 October 2026, including Canvas color spaces and ImageData. The site's native-size, 8-bit sRGB RGBA and transparent-RGB policy is stated separately.
Continue with your file
- Compare SHA-256 before and after a metadata edit — Hash a known PNG, replace one exact text field, and check the saved output against the expected digest while its compressed image data remains unchanged.
- Exact duplicate files versus decoded pixel matches — Find differently named byte-identical files, keep same-name variants separate, and compare native-size sRGB RGBA with explicit orientation, alpha and color conditions.
- Check an image extension against its real container — Identify a PNG named .jpg, compare its browser MIME and actual structure, and distinguish renaming, damaged data and genuine conversion.
- Prepare an image file for the check you need — Check actual format, byte size, encoded/display dimensions and known file history, then choose a supported local field, hash, pixel or optional model workflow.