From a3d00301cf688c0da3d2edd3499a0f014f113dc6 Mon Sep 17 00:00:00 2001 From: NetterSilver <133535268+Silvertree2010@users.noreply.github.com> Date: Mon, 19 Oct 2026 05:16:03 +0000 Subject: [PATCH] Write ISOSpeed extension tag for ISO above 65534 in write_exif Found while testing crates/meta/src/exif.rs:455 (write_exif) Co-Authored-By: Claude Haiku 5.5 Co-Authored-By: Claude Sonnet 5.5 --- crates/meta/src/exif.rs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/crates/meta/src/exif.rs b/crates/meta/src/exif.rs index 2b2ea1d13..40471b360 100644 --- a/crates/meta/src/exif.rs +++ b/crates/meta/src/exif.rs @@ -453,6 +453,7 @@ pub fn write_exif(meta: &Metadata) -> Vec { (t::F_NUMBER, r(meta.f_number)), (t::FOCAL_LENGTH, r(meta.focal_length)), (t::ISO_SPEED, meta.iso.map(|i| Value::Short(vec![i.min(65_535) as u16]))), + (t::ISO_SPEED_RATINGS_EXT, meta.iso.filter(|&i| i > 65_534).map(|i| Value::Long(vec![i]))), (t::LENS_MAKE, ascii(&meta.lens_make)), (t::LENS_MODEL, ascii(&meta.lens_model)), (t::EXPOSURE_BIAS, meta.exposure_bias.map(|v| Value::SRational(vec![srational(v)]))), @@ -518,4 +519,12 @@ mod write_tests { let g = back.gps.unwrap(); assert!((g.latitude - 43.7904).abs() < 1e-5 && (g.longitude + 110.6818).abs() < 1e-5, "{g:?}"); } + + #[test] + fn iso_above_65534_round_trips() { + for iso in [65_534, 65_535, 102_400, 409_600] { + let back = read_exif(&write_exif(&Metadata { iso: Some(iso), ..Default::default() })); + assert_eq!(back.iso, Some(iso)); + } + } }