photocraft/crates/codecs/tests
Brandon Thomas ffd811d679 feat(save): File › Save keeps a JPEG's quality and a WebP's lossy/lossless encoding (#2399)
Opening a JPEG now estimates the quality it was saved at from its quantisation
tables (the Annex K tables of ITU-T T.81 scaled by the IJG quality curve; exact
for such tables, the closest fit otherwise). Opening a WebP records whether it
is lossless (VP8L) or lossy (VP8), and a lossy one's quality from its base
quantiser index. The settings live on the document (`Document::file_encoding`,
saved in .pcraft) and a save that asks for no quality writes the file back the
same way, as Photoshop's Save does: File › Save, Save As and Save a Copy start
there instead of the fixed codec defaults (quality 90, WebP always lossless).
An explicit quality still wins; new documents and other formats keep the
defaults. Hostile or truncated DQT/VP8 headers give no estimate, never a panic.

Refs #2399

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-12 04:13:51 -04:00
..
common TIFF: BigTIFF, every IFD and SubIFD, banded parallel decode (FILE-215-8, part of #215) (#859) 2026-10-07 22:37:51 -04:00
camera_raw.rs Format: adopt the craft-family rustfmt.toml and format the workspace 2026-10-04 11:31:17 -04:00
decode_warnings.rs Import warns when it keeps only the first frame or page, or a JPEG ends early (#518, #523) (#563) 2026-10-07 16:20:02 +07:00
deep_exr.rs Corpus: pin the deep OpenEXR test images and check them in CI (#881) 2026-10-08 16:08:56 -04:00
detect_caps.rs Add FITS read/write (astronomy images) (#2956) 2026-10-11 13:15:22 -04:00
exr_cryptomatte.rs EXR: Cryptomatte layers list, decode and hash to the specification (#2180) 2026-10-10 06:40:49 -04:00
exr_multipart.rs EXR: multi-part files open the colour part; exr_info lists them all (#2116) 2026-10-09 18:51:33 -04:00
fidelity.rs Layered TIFF: open and save Photoshop layer data in TIFF files, in either byte order (part of #215) (#672) 2026-10-07 17:10:35 -04:00
gif_frames.rs Animated GIF: every frame loads into video layers (#572) (#2999) 2026-10-12 01:26:37 -04:00
heif.rs Open HEIC/HEIF photos (#355) (#372) 2026-10-07 10:20:40 -04:00
limits.rs Keep PNG text metadata through document saves (#1684) 2026-10-09 09:53:37 -04:00
malformed.rs Add FITS read/write (astronomy images) (#2956) 2026-10-11 13:15:22 -04:00
metadata.rs Add FITS read/write (astronomy images) (#2956) 2026-10-11 13:15:22 -04:00
orientation.rs Harden EXIF orientation: limits after rotation, fallible allocation, strict IFD parsing (#345) (#345) 2026-10-06 18:21:33 -04:00
png_jpeg.rs Photoshop oracles via storytold/photocraft-corpus: pinned corpora, corpus feature, test-corpus, CI job (#190) (#190) 2026-10-05 17:47:33 -04:00
pnm_peak_memory.rs Codecs: decode PNM straight into the budgeted output buffer (#2938) (#3291) 2026-10-11 21:16:07 -04:00
resolution.rs fix(codecs): exports drop the source's EXIF thumbnail (#2147, #2373) (#2450) 2026-10-10 13:11:59 -04:00
roundtrip.rs Add FITS read/write (astronomy images) (#2956) 2026-10-11 13:15:22 -04:00
source_settings.rs feat(save): File › Save keeps a JPEG's quality and a WebP's lossy/lossless encoding (#2399) 2026-10-12 04:13:51 -04:00
tiff_bench.rs TIFF: BigTIFF, every IFD and SubIFD, banded parallel decode (FILE-215-8, part of #215) (#859) 2026-10-07 22:37:51 -04:00
tiff_pages.rs TIFF: alpha after an unspecified extra sample opens transparent (#1349) (#1513) 2026-10-09 11:12:00 +07:00
tiff_photoshop.rs Layered TIFF: open and save Photoshop layer data in TIFF files, in either byte order (part of #215) (#672) 2026-10-07 17:10:35 -04:00
tiff_regressions.rs fix(codecs): correct TIFF polarity and BigTIFF orientation (#746) 2026-10-07 13:50:04 -07:00
webp_lossy.rs Lossy WebP: a pure-Rust VP8 encoder with quality and lossless controls (#648) (#880) 2026-10-07 21:12:38 -04:00