mirror of
https://github.com/storytold/photocraft.git
synced 2026-10-25 23:50:01 +00:00
6ce21609a2
Seven public-domain files (raw.pixls.us), one per decode path: Canon PowerShot SX50 HS as CR2 and as its DNG conversion, Nikon D3 uncompressed NEF, Sony DSC-RX0 cRAW ARW, Panasonic DC-G9 high-res RW2 (10480x7794, crop 10368x7776), Olympus E-1 with a GRBG CFA, and the Olympus E-5 as the documented known-unsupported packed-ORF case (still previews). xtask grows --pixls (single-file downloads, the server redirects /data/ to /download/), a sha256-verified manifest and a --update-manifest path; photocraft-raw gains the corpus feature and oracle tests: format, make/model, sensor size, CFA, black/white levels and the crop are exact, developing yields the crop in 16-bit RGB, deterministic, with sane range coverage. Two real findings already documented by the tests: the PowerShot CR2 and the RX0 ARW carry no as-shot white balance we read, so the grey-world estimate brightens those scenes (the same camera's DNG develops blacks to ~0). Reading the Canon and Sony maker-note WB tags is the follow-up.
38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
//! Prints the raw metadata of files: `cargo run -p photocraft-raw --example inspect -- a.cr2 b.nef`
|
|
//! (handy while adding corpus files; the oracle expectations in `tests/raw_corpus.rs` come from it).
|
|
use std::env;
|
|
|
|
fn main() {
|
|
for path in env::args().skip(1) {
|
|
let bytes = match std::fs::read(&path) {
|
|
Ok(b) => b,
|
|
Err(e) => {
|
|
println!("{path}: read error {e}");
|
|
continue;
|
|
}
|
|
};
|
|
match photocraft_raw::decode(&bytes, &photocraft_raw::Limits::default()) {
|
|
Ok(s) => {
|
|
println!(
|
|
"{path}: {:?} make={:?} model={:?} {}x{} samples={} cfa={:?} wb={:?} black={:?} white={:?} crop={:?}..{:?} orientation={} warnings={}",
|
|
s.format,
|
|
s.make,
|
|
s.model,
|
|
s.width,
|
|
s.height,
|
|
s.samples,
|
|
s.cfa,
|
|
s.camera_wb,
|
|
s.black,
|
|
s.white,
|
|
s.active,
|
|
s.crop,
|
|
s.orientation,
|
|
s.warnings.len(),
|
|
);
|
|
}
|
|
Err(e) => println!("{path}: decode error {e}"),
|
|
}
|
|
}
|
|
}
|