From 418dbb392b43119762dec7fb5a6eb6bb5494eded Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Tue, 29 Jul 2025 21:24:07 +0200 Subject: [PATCH 1/6] preliminary commit --- src/ifd.rs | 48 ++++++++++++++++++++++++++++++++++++++++++ src/metadata/reader.rs | 7 +++++- 2 files changed, 54 insertions(+), 1 deletion(-) diff --git a/src/ifd.rs b/src/ifd.rs index f0da9c1..c9722d3 100644 --- a/src/ifd.rs +++ b/src/ifd.rs @@ -1,5 +1,7 @@ use std::collections::HashMap; +use std::fmt::Debug; use std::ops::Range; +use std::sync::Arc; use bytes::Bytes; use num_enum::TryFromPrimitive; @@ -17,6 +19,48 @@ use crate::tile::Tile; const DOCUMENT_NAME: u16 = 269; +/// Trait to implement for custom tags, such as Geo, EXIF, OME, etc +pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug { + /// a list of tags this entry processes + /// e.g. for Geo this would be [34735, 34736, 34737] + fn tags(&self) -> &'static [Tag]; + /// process a single tag + fn process_tag(&mut self, tag: u16, value: Value) -> AsyncTiffResult<()>; +} + +// +pub trait ExtraTagsCloneArc { + fn clone_arc(&self) -> Arc; +} + +impl ExtraTagsCloneArc for T +where + T: 'static + ExtraTags + Clone +{ + fn clone_arc(&self) -> Arc { + Arc::new(self.clone()) + } +} + +#[derive(Debug, Clone)] +pub struct ExtraTagsRegistry(HashMap>); + +impl ExtraTagsRegistry { + pub fn register(&mut self, tags: Arc) -> AsyncTiffResult<()> { + // check for duplicates + for tag in tags.tags() { + if self.0.contains_key(tag) { + return Err(AsyncTiffError::General(format!("Tag {tag:?} already registered in {self:?}!"))); + } + } + // add to self + for tag in tags.tags() { + self.0.insert(*tag, tags.clone()); + } + Ok(()) + } +} + /// An ImageFileDirectory representing Image content // The ordering of these tags matches the sorted order in TIFF spec Appendix A #[allow(dead_code)] @@ -133,6 +177,8 @@ pub struct ImageFileDirectory { pub(crate) copyright: Option, + pub(crate) extra_tags: ExtraTagsRegistry, + // Geospatial tags pub(crate) geo_key_directory: Option, pub(crate) model_pixel_scale: Option>, @@ -149,6 +195,7 @@ impl ImageFileDirectory { pub fn from_tags( tag_data: HashMap, endianness: Endianness, + extra_tags_registry: ExtraTagsRegistry ) -> AsyncTiffResult { let mut new_subfile_type = None; let mut image_width = None; @@ -398,6 +445,7 @@ impl ImageFileDirectory { geo_key_directory, model_pixel_scale, model_tiepoint, + extra_tags: extra_tags_registry, other_tags, }) } diff --git a/src/metadata/reader.rs b/src/metadata/reader.rs index 6a72ff9..50e38f2 100644 --- a/src/metadata/reader.rs +++ b/src/metadata/reader.rs @@ -4,6 +4,7 @@ use std::io::Read; use bytes::Bytes; use crate::error::{AsyncTiffError, AsyncTiffResult}; +use crate::ifd::ExtraTagsRegistry; use crate::metadata::fetch::MetadataCursor; use crate::metadata::MetadataFetch; use crate::reader::Endianness; @@ -157,6 +158,8 @@ pub struct ImageFileDirectoryReader { ifd_entry_byte_size: u64, /// The number of bytes that the value for the number of tags takes up. tag_count_byte_size: u64, + /// Registry for parsing extra tags + extra_tags_registry: ExtraTagsRegistry, } impl ImageFileDirectoryReader { @@ -166,6 +169,7 @@ impl ImageFileDirectoryReader { ifd_start_offset: u64, bigtiff: bool, endianness: Endianness, + extra_tags_registry: ExtraTagsRegistry, ) -> AsyncTiffResult { let mut cursor = MetadataCursor::new_with_offset(fetch, endianness, ifd_start_offset); @@ -194,6 +198,7 @@ impl ImageFileDirectoryReader { tag_count, tag_count_byte_size, ifd_start_offset, + extra_tags_registry, }) } @@ -226,7 +231,7 @@ impl ImageFileDirectoryReader { let (tag, value) = self.read_tag(fetch, tag_idx).await?; tags.insert(tag, value); } - ImageFileDirectory::from_tags(tags, self.endianness) + ImageFileDirectory::from_tags(tags, self.endianness, self.extra_tags_registry) } /// Finish this reader, reading the byte offset of the next IFD From a7c6a7d2bde3daea741469472c5750d0cd0bbdae Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Wed, 30 Jul 2025 02:56:11 +0200 Subject: [PATCH 2/6] feat:tag_registry added tag registry core functionality --- python/src/tiff.rs | 2 +- src/cog.rs | 2 +- src/ifd.rs | 40 +++++++++++++++++++++++++++++++++++++--- src/metadata/mod.rs | 2 +- src/metadata/reader.rs | 15 +++++++-------- tests/image_tiff/util.rs | 2 +- tests/util/mod.rs | 2 +- 7 files changed, 49 insertions(+), 16 deletions(-) diff --git a/python/src/tiff.rs b/python/src/tiff.rs index 861c519..e334778 100644 --- a/python/src/tiff.rs +++ b/python/src/tiff.rs @@ -37,7 +37,7 @@ impl PyTIFF { .map_err(|err| PyFileNotFoundError::new_err(err.to_string()))?; let mut metadata_reader = TiffMetadataReader::try_open(&metadata_fetch).await.unwrap(); let ifds = metadata_reader - .read_all_ifds(&metadata_fetch) + .read_all_ifds(&metadata_fetch, Default::default()) .await .unwrap(); let tiff = TIFF::new(ifds); diff --git a/src/cog.rs b/src/cog.rs index 99a0f14..545e263 100644 --- a/src/cog.rs +++ b/src/cog.rs @@ -44,7 +44,7 @@ mod test { .await .unwrap(); let ifds = metadata_reader - .read_all_ifds(&prefetch_reader) + .read_all_ifds(&prefetch_reader, Default::default()) .await .unwrap(); let tiff = TIFF::new(ifds); diff --git a/src/ifd.rs b/src/ifd.rs index c9722d3..b321b60 100644 --- a/src/ifd.rs +++ b/src/ifd.rs @@ -1,4 +1,4 @@ -use std::collections::HashMap; +use std::collections::{HashMap, HashSet}; use std::fmt::Debug; use std::ops::Range; use std::sync::Arc; @@ -20,7 +20,9 @@ use crate::tile::Tile; const DOCUMENT_NAME: u16 = 269; /// Trait to implement for custom tags, such as Geo, EXIF, OME, etc -pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug { +/// your type should also implement `Clone` +// Send + Sync are required for Python, where `dyn ExtraTags` needs `Send` and `Sync` +pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug + Send + Sync { /// a list of tags this entry processes /// e.g. for Geo this would be [34735, 34736, 34737] fn tags(&self) -> &'static [Tag]; @@ -28,7 +30,8 @@ pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug { fn process_tag(&mut self, tag: u16, value: Value) -> AsyncTiffResult<()>; } -// +// we need to do a little dance to do an object-safe deep clone +// https://stackoverflow.com/a/30353928/14681457 pub trait ExtraTagsCloneArc { fn clone_arc(&self) -> Arc; } @@ -46,6 +49,11 @@ where pub struct ExtraTagsRegistry(HashMap>); impl ExtraTagsRegistry { + /// Create a new, empty `ExtraTagsRegistry` + pub fn new() -> Self{ + Self(HashMap::new()) + } + /// Register an ExtraTags so their tags are parsed and stored in the ifd's `extra_tags`` pub fn register(&mut self, tags: Arc) -> AsyncTiffResult<()> { // check for duplicates for tag in tags.tags() { @@ -59,6 +67,32 @@ impl ExtraTagsRegistry { } Ok(()) } + + /// deep clone so we have different registries per IFD + pub(crate) fn deep_clone(&self) -> Self { + let mut new_registry = ExtraTagsRegistry::new(); + + + // we need to do some magic, because we can have multiple tags pointing to the same arc + let mut seen = HashSet::new(); + for extra_tags in self.0.values() { + // only add if this is the first encountered reference to this arc + // (using thin pointer equality: https://stackoverflow.com/a/67114787/14681457 ; https://github.com/rust-lang/rust/issues/46139#issuecomment-346971153) + if seen.insert(Arc::as_ptr(extra_tags) as *const ()) { + if let Err(e) = new_registry.register(extra_tags.clone_arc()) { + panic!("{e}"); + } + } + } + + new_registry + } +} + +impl Default for ExtraTagsRegistry { + fn default() -> Self { + Self::new() // add e.g. geo tags later + } } /// An ImageFileDirectory representing Image content diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 3592014..7df990e 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -40,7 +40,7 @@ //! //! // Read all IFDs out of the source. //! let ifds = metadata_reader -//! .read_all_ifds(&prefetch_reader) +//! .read_all_ifds(&prefetch_reader, Default::default()) //! .await //! .unwrap(); //! # }) diff --git a/src/metadata/reader.rs b/src/metadata/reader.rs index 50e38f2..47ffda6 100644 --- a/src/metadata/reader.rs +++ b/src/metadata/reader.rs @@ -111,12 +111,13 @@ impl TiffMetadataReader { pub async fn read_next_ifd( &mut self, fetch: &F, + extra_tags_registry: ExtraTagsRegistry, ) -> AsyncTiffResult> { if let Some(ifd_start) = self.next_ifd_offset { let ifd_reader = ImageFileDirectoryReader::open(fetch, ifd_start, self.bigtiff, self.endianness) .await?; - let ifd = ifd_reader.read(fetch).await?; + let ifd = ifd_reader.read(fetch, extra_tags_registry).await?; let next_ifd_offset = ifd_reader.finish(fetch).await?; self.next_ifd_offset = next_ifd_offset; Ok(Some(ifd)) @@ -129,9 +130,11 @@ impl TiffMetadataReader { pub async fn read_all_ifds( &mut self, fetch: &F, + extra_tags_registry: ExtraTagsRegistry, ) -> AsyncTiffResult> { let mut ifds = vec![]; - while let Some(ifd) = self.read_next_ifd(fetch).await? { + // deep clone the extra_tags_registry so we can have different values + while let Some(ifd) = self.read_next_ifd(fetch, extra_tags_registry.deep_clone()).await? { ifds.push(ifd); } Ok(ifds) @@ -158,8 +161,6 @@ pub struct ImageFileDirectoryReader { ifd_entry_byte_size: u64, /// The number of bytes that the value for the number of tags takes up. tag_count_byte_size: u64, - /// Registry for parsing extra tags - extra_tags_registry: ExtraTagsRegistry, } impl ImageFileDirectoryReader { @@ -169,7 +170,6 @@ impl ImageFileDirectoryReader { ifd_start_offset: u64, bigtiff: bool, endianness: Endianness, - extra_tags_registry: ExtraTagsRegistry, ) -> AsyncTiffResult { let mut cursor = MetadataCursor::new_with_offset(fetch, endianness, ifd_start_offset); @@ -198,7 +198,6 @@ impl ImageFileDirectoryReader { tag_count, tag_count_byte_size, ifd_start_offset, - extra_tags_registry, }) } @@ -225,13 +224,13 @@ impl ImageFileDirectoryReader { /// /// Keep in mind that you'll still need to call [`finish`][Self::finish] to get the byte offset /// of the next IFD. - pub async fn read(&self, fetch: &F) -> AsyncTiffResult { + pub async fn read(&self, fetch: &F, extra_tags_registry: ExtraTagsRegistry) -> AsyncTiffResult { let mut tags = HashMap::with_capacity(self.tag_count as usize); for tag_idx in 0..self.tag_count { let (tag, value) = self.read_tag(fetch, tag_idx).await?; tags.insert(tag, value); } - ImageFileDirectory::from_tags(tags, self.endianness, self.extra_tags_registry) + ImageFileDirectory::from_tags(tags, self.endianness, extra_tags_registry) } /// Finish this reader, reading the byte offset of the next IFD diff --git a/tests/image_tiff/util.rs b/tests/image_tiff/util.rs index 0b7e0c3..1628a88 100644 --- a/tests/image_tiff/util.rs +++ b/tests/image_tiff/util.rs @@ -14,6 +14,6 @@ pub(crate) async fn open_tiff(filename: &str) -> TIFF { let reader = Arc::new(ObjectReader::new(store.clone(), path.as_str().into())) as Arc; let mut metadata_reader = TiffMetadataReader::try_open(&reader).await.unwrap(); - let ifds = metadata_reader.read_all_ifds(&reader).await.unwrap(); + let ifds = metadata_reader.read_all_ifds(&reader, Default::default()).await.unwrap(); TIFF::new(ifds) } diff --git a/tests/util/mod.rs b/tests/util/mod.rs index 8b3fa07..7eae8b1 100644 --- a/tests/util/mod.rs +++ b/tests/util/mod.rs @@ -17,7 +17,7 @@ pub(crate) async fn open_remote_tiff(url: &str) -> TIFF { .await .unwrap(); let ifds = metadata_reader - .read_all_ifds(&prefetch_reader) + .read_all_ifds(&prefetch_reader, Default::default()) .await .unwrap(); TIFF::new(ifds) From 465c5c5ea9dcc136cda8c5c4900e312fb3a82741 Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Wed, 30 Jul 2025 04:31:25 +0200 Subject: [PATCH 3/6] moved extra_tags to its own file; added first tests --- src/ifd.rs | 82 +------------------- src/metadata/extra_tags.rs | 155 +++++++++++++++++++++++++++++++++++++ src/metadata/mod.rs | 2 + src/metadata/reader.rs | 13 +++- tests/image_tiff/util.rs | 5 +- 5 files changed, 174 insertions(+), 83 deletions(-) create mode 100644 src/metadata/extra_tags.rs diff --git a/src/ifd.rs b/src/ifd.rs index b321b60..1eb8f58 100644 --- a/src/ifd.rs +++ b/src/ifd.rs @@ -1,13 +1,13 @@ -use std::collections::{HashMap, HashSet}; +use std::collections::HashMap; use std::fmt::Debug; use std::ops::Range; -use std::sync::Arc; use bytes::Bytes; use num_enum::TryFromPrimitive; use crate::error::{AsyncTiffError, AsyncTiffResult}; use crate::geo::{GeoKeyDirectory, GeoKeyTag}; +use crate::metadata::ExtraTagsRegistry; use crate::predictor::PredictorInfo; use crate::reader::{AsyncFileReader, Endianness}; use crate::tiff::tags::{ @@ -19,82 +19,6 @@ use crate::tile::Tile; const DOCUMENT_NAME: u16 = 269; -/// Trait to implement for custom tags, such as Geo, EXIF, OME, etc -/// your type should also implement `Clone` -// Send + Sync are required for Python, where `dyn ExtraTags` needs `Send` and `Sync` -pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug + Send + Sync { - /// a list of tags this entry processes - /// e.g. for Geo this would be [34735, 34736, 34737] - fn tags(&self) -> &'static [Tag]; - /// process a single tag - fn process_tag(&mut self, tag: u16, value: Value) -> AsyncTiffResult<()>; -} - -// we need to do a little dance to do an object-safe deep clone -// https://stackoverflow.com/a/30353928/14681457 -pub trait ExtraTagsCloneArc { - fn clone_arc(&self) -> Arc; -} - -impl ExtraTagsCloneArc for T -where - T: 'static + ExtraTags + Clone -{ - fn clone_arc(&self) -> Arc { - Arc::new(self.clone()) - } -} - -#[derive(Debug, Clone)] -pub struct ExtraTagsRegistry(HashMap>); - -impl ExtraTagsRegistry { - /// Create a new, empty `ExtraTagsRegistry` - pub fn new() -> Self{ - Self(HashMap::new()) - } - /// Register an ExtraTags so their tags are parsed and stored in the ifd's `extra_tags`` - pub fn register(&mut self, tags: Arc) -> AsyncTiffResult<()> { - // check for duplicates - for tag in tags.tags() { - if self.0.contains_key(tag) { - return Err(AsyncTiffError::General(format!("Tag {tag:?} already registered in {self:?}!"))); - } - } - // add to self - for tag in tags.tags() { - self.0.insert(*tag, tags.clone()); - } - Ok(()) - } - - /// deep clone so we have different registries per IFD - pub(crate) fn deep_clone(&self) -> Self { - let mut new_registry = ExtraTagsRegistry::new(); - - - // we need to do some magic, because we can have multiple tags pointing to the same arc - let mut seen = HashSet::new(); - for extra_tags in self.0.values() { - // only add if this is the first encountered reference to this arc - // (using thin pointer equality: https://stackoverflow.com/a/67114787/14681457 ; https://github.com/rust-lang/rust/issues/46139#issuecomment-346971153) - if seen.insert(Arc::as_ptr(extra_tags) as *const ()) { - if let Err(e) = new_registry.register(extra_tags.clone_arc()) { - panic!("{e}"); - } - } - } - - new_registry - } -} - -impl Default for ExtraTagsRegistry { - fn default() -> Self { - Self::new() // add e.g. geo tags later - } -} - /// An ImageFileDirectory representing Image content // The ordering of these tags matches the sorted order in TIFF spec Appendix A #[allow(dead_code)] @@ -229,7 +153,7 @@ impl ImageFileDirectory { pub fn from_tags( tag_data: HashMap, endianness: Endianness, - extra_tags_registry: ExtraTagsRegistry + extra_tags_registry: ExtraTagsRegistry, ) -> AsyncTiffResult { let mut new_subfile_type = None; let mut image_width = None; diff --git a/src/metadata/extra_tags.rs b/src/metadata/extra_tags.rs new file mode 100644 index 0000000..3225956 --- /dev/null +++ b/src/metadata/extra_tags.rs @@ -0,0 +1,155 @@ +use crate::error::{AsyncTiffError, AsyncTiffResult}; +use crate::tiff::tags::Tag; +use crate::tiff::Value; +use std::collections::{HashMap, HashSet}; +use std::fmt::Debug; +use std::sync::Arc; + +/// Trait to implement for custom tags, such as Geo, EXIF, OME, etc +/// your type should also implement `Clone` +// Send + Sync are required for Python, where `dyn ExtraTags` needs `Send` and `Sync` +pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug + Send + Sync { + /// a list of tags this entry processes + /// e.g. for Geo this would be [34735, 34736, 34737] + fn tags(&self) -> &'static [Tag]; + /// process a single tag + fn process_tag(&mut self, tag: u16, value: Value) -> AsyncTiffResult<()>; +} + +// we need to do a little dance to do an object-safe deep clone +// https://stackoverflow.com/a/30353928/14681457 +pub trait ExtraTagsCloneArc { + fn clone_arc(&self) -> Arc; +} + +impl ExtraTagsCloneArc for T +where + T: 'static + ExtraTags + Clone, +{ + fn clone_arc(&self) -> Arc { + Arc::new(self.clone()) + } +} + +/// The registry in which extra tags (parsers) are registered +/// This is passed to TODO +#[derive(Debug, Clone)] +pub struct ExtraTagsRegistry(HashMap>); + +impl ExtraTagsRegistry { + /// Create a new, empty `ExtraTagsRegistry` + pub fn new() -> Self { + Self(HashMap::new()) + } + /// Register an ExtraTags so their tags are parsed and stored in the ifd's `extra_tags`` + pub fn register(&mut self, tags: Arc) -> AsyncTiffResult<()> { + // check for duplicates + for tag in tags.tags() { + if self.0.contains_key(tag) { + return Err(AsyncTiffError::General(format!( + "Tag {tag:?} already registered in {self:?}!" + ))); + } + } + // add to self + for tag in tags.tags() { + self.0.insert(*tag, tags.clone()); + } + Ok(()) + } + + /// deep clone so we have different registries per IFD + pub(crate) fn deep_clone(&self) -> Self { + let mut new_registry = ExtraTagsRegistry::new(); + + // we need to do some magic, because we can have multiple tags pointing to the same arc + let mut seen = HashSet::new(); + for extra_tags in self.0.values() { + // only add if this is the first encountered reference to this arc + // (using thin pointer equality: https://stackoverflow.com/a/67114787/14681457 ; https://github.com/rust-lang/rust/issues/46139#issuecomment-346971153) + if seen.insert(Arc::as_ptr(extra_tags) as *const ()) { + if let Err(e) = new_registry.register(extra_tags.clone_arc()) { + panic!("{e}"); + } + } + } + + new_registry + } +} + +impl Default for ExtraTagsRegistry { + fn default() -> Self { + Self::new() // add e.g. geo tags later + } +} + +#[cfg(test)] +mod tests { + use super::*; + use std::sync::LazyLock; + + #[derive(Debug, Clone, PartialEq)] + struct TestyTag; + + static TESTY_TAGS: LazyLock> = LazyLock::new(|| { + vec![ + Tag::from_u16_exhaustive(u16::MAX), + Tag::from_u16_exhaustive(u16::MAX - 1), + ] + }); + + impl ExtraTags for TestyTag { + fn tags(&self) -> &'static [Tag] { + &TESTY_TAGS + } + + fn process_tag( + &mut self, + tag: u16, + value: crate::tiff::Value, + ) -> crate::error::AsyncTiffResult<()> { + println!("received {tag:?}: {value:?}"); + Ok(()) + } + } + + #[test] + fn test_register() { + let mut registry = ExtraTagsRegistry::new(); + assert!(registry.0.is_empty()); + let a1: Arc = Arc::new(TestyTag); + registry.register(a1.clone()).unwrap(); + assert_eq!(registry.0.len(), TestyTag.tags().len()); + for tag in a1.tags() { + // very strict equality check + assert!(Arc::ptr_eq(®istry.0[tag], &a1)); + } + } + + #[test] + fn test_overlap_err() { + let mut registry = ExtraTagsRegistry::new(); + assert!(registry.0.is_empty()); + registry.register(Arc::new(TestyTag)).unwrap(); + assert!(matches!( + registry.register(Arc::new(TestyTag)).unwrap_err(), + AsyncTiffError::General(_) + )); + } + + #[test] + fn test_deep_clone() { + let mut registry = ExtraTagsRegistry::new(); + let a1: Arc = Arc::new(TestyTag); + registry.register(a1.clone()).unwrap(); + let r2 = registry.deep_clone(); + for tags in a1.tags().windows(2) { + // all should refer to the same Arc + assert!(Arc::ptr_eq(&r2.0[&tags[0]], &r2.0[&tags[1]])); + // which is different from the previous + assert!(!Arc::ptr_eq(&a1, &r2.0[&tags[0]])); + assert!(!Arc::ptr_eq(&a1, &r2.0[&tags[1]])); + } + } +} diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index 7df990e..f2792c7 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -58,8 +58,10 @@ //! fetches the first `N` bytes out of a file. //! +mod extra_tags; mod fetch; mod reader; +pub use extra_tags::{ExtraTags, ExtraTagsRegistry}; pub use fetch::{MetadataFetch, PrefetchBuffer}; pub use reader::{ImageFileDirectoryReader, TiffMetadataReader}; diff --git a/src/metadata/reader.rs b/src/metadata/reader.rs index 47ffda6..34c67c1 100644 --- a/src/metadata/reader.rs +++ b/src/metadata/reader.rs @@ -4,8 +4,8 @@ use std::io::Read; use bytes::Bytes; use crate::error::{AsyncTiffError, AsyncTiffResult}; -use crate::ifd::ExtraTagsRegistry; use crate::metadata::fetch::MetadataCursor; +use crate::metadata::ExtraTagsRegistry; use crate::metadata::MetadataFetch; use crate::reader::Endianness; use crate::tiff::tags::{Tag, Type}; @@ -134,7 +134,10 @@ impl TiffMetadataReader { ) -> AsyncTiffResult> { let mut ifds = vec![]; // deep clone the extra_tags_registry so we can have different values - while let Some(ifd) = self.read_next_ifd(fetch, extra_tags_registry.deep_clone()).await? { + while let Some(ifd) = self + .read_next_ifd(fetch, extra_tags_registry.deep_clone()) + .await? + { ifds.push(ifd); } Ok(ifds) @@ -224,7 +227,11 @@ impl ImageFileDirectoryReader { /// /// Keep in mind that you'll still need to call [`finish`][Self::finish] to get the byte offset /// of the next IFD. - pub async fn read(&self, fetch: &F, extra_tags_registry: ExtraTagsRegistry) -> AsyncTiffResult { + pub async fn read( + &self, + fetch: &F, + extra_tags_registry: ExtraTagsRegistry, + ) -> AsyncTiffResult { let mut tags = HashMap::with_capacity(self.tag_count as usize); for tag_idx in 0..self.tag_count { let (tag, value) = self.read_tag(fetch, tag_idx).await?; diff --git a/tests/image_tiff/util.rs b/tests/image_tiff/util.rs index 1628a88..b00a4ad 100644 --- a/tests/image_tiff/util.rs +++ b/tests/image_tiff/util.rs @@ -14,6 +14,9 @@ pub(crate) async fn open_tiff(filename: &str) -> TIFF { let reader = Arc::new(ObjectReader::new(store.clone(), path.as_str().into())) as Arc; let mut metadata_reader = TiffMetadataReader::try_open(&reader).await.unwrap(); - let ifds = metadata_reader.read_all_ifds(&reader, Default::default()).await.unwrap(); + let ifds = metadata_reader + .read_all_ifds(&reader, Default::default()) + .await + .unwrap(); TIFF::new(ifds) } From 21d6b51fd9e4d10f0fae92070b0112ec7e8c19a3 Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Wed, 30 Jul 2025 16:25:17 +0200 Subject: [PATCH 4/6] added blanket type conversion --- src/metadata/extra_tags.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/metadata/extra_tags.rs b/src/metadata/extra_tags.rs index 3225956..917cc3d 100644 --- a/src/metadata/extra_tags.rs +++ b/src/metadata/extra_tags.rs @@ -1,6 +1,7 @@ use crate::error::{AsyncTiffError, AsyncTiffResult}; use crate::tiff::tags::Tag; use crate::tiff::Value; +use std::any::Any; use std::collections::{HashMap, HashSet}; use std::fmt::Debug; use std::sync::Arc; @@ -8,7 +9,7 @@ use std::sync::Arc; /// Trait to implement for custom tags, such as Geo, EXIF, OME, etc /// your type should also implement `Clone` // Send + Sync are required for Python, where `dyn ExtraTags` needs `Send` and `Sync` -pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug + Send + Sync { +pub trait ExtraTags: ExtraTagsBlankets + Any + Debug + Send + Sync { /// a list of tags this entry processes /// e.g. for Geo this would be [34735, 34736, 34737] fn tags(&self) -> &'static [Tag]; @@ -18,17 +19,23 @@ pub trait ExtraTags: ExtraTagsCloneArc + std::any::Any + Debug + Send + Sync { // we need to do a little dance to do an object-safe deep clone // https://stackoverflow.com/a/30353928/14681457 -pub trait ExtraTagsCloneArc { +// also object-safe type conversions for downcasting +pub trait ExtraTagsBlankets { fn clone_arc(&self) -> Arc; + fn as_any_arc(self: Arc) -> Arc; } -impl ExtraTagsCloneArc for T +impl ExtraTagsBlankets for T where T: 'static + ExtraTags + Clone, { fn clone_arc(&self) -> Arc { Arc::new(self.clone()) } + + fn as_any_arc(self: Arc) -> Arc { + self + } } /// The registry in which extra tags (parsers) are registered From 06ebb91aea7dc288a1a377e894b2898a7eaffaaa Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Wed, 30 Jul 2025 16:38:05 +0200 Subject: [PATCH 5/6] added ExtraTags index impl and actually add the tags in ifd::from_tags impl --- src/ifd.rs | 9 +++++++-- src/metadata/extra_tags.rs | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/ifd.rs b/src/ifd.rs index 1eb8f58..b27e28b 100644 --- a/src/ifd.rs +++ b/src/ifd.rs @@ -267,8 +267,13 @@ impl ImageFileDirectory { // Tag::GdalNodata // Tags for which the tiff crate doesn't have a hard-coded enum variant Tag::Unknown(DOCUMENT_NAME) => document_name = Some(value.into_string()?), - _ => { - other_tags.insert(tag, value); + t => { + if extra_tags_registry.contains(&t) { + extra_tags_registry[&t].process_tag(t, value); + } else { + other_tags.insert(tag, value); + } + } }; Ok::<_, TiffError>(()) diff --git a/src/metadata/extra_tags.rs b/src/metadata/extra_tags.rs index 917cc3d..be7a4fb 100644 --- a/src/metadata/extra_tags.rs +++ b/src/metadata/extra_tags.rs @@ -4,6 +4,7 @@ use crate::tiff::Value; use std::any::Any; use std::collections::{HashMap, HashSet}; use std::fmt::Debug; +use std::ops::Index; use std::sync::Arc; /// Trait to implement for custom tags, such as Geo, EXIF, OME, etc @@ -13,8 +14,8 @@ pub trait ExtraTags: ExtraTagsBlankets + Any + Debug + Send + Sync { /// a list of tags this entry processes /// e.g. for Geo this would be [34735, 34736, 34737] fn tags(&self) -> &'static [Tag]; - /// process a single tag - fn process_tag(&mut self, tag: u16, value: Value) -> AsyncTiffResult<()>; + /// process a single tag, using internal mutability if needed + fn process_tag(&self, tag: Tag, value: Value) -> AsyncTiffResult<()>; } // we need to do a little dance to do an object-safe deep clone @@ -48,6 +49,10 @@ impl ExtraTagsRegistry { pub fn new() -> Self { Self(HashMap::new()) } + /// checks if we have an entry for this tag + pub fn contains(&self, tag: &Tag) -> bool { + self.0.contains_key(tag) + } /// Register an ExtraTags so their tags are parsed and stored in the ifd's `extra_tags`` pub fn register(&mut self, tags: Arc) -> AsyncTiffResult<()> { // check for duplicates @@ -91,6 +96,13 @@ impl Default for ExtraTagsRegistry { } } +impl Index<&Tag> for ExtraTagsRegistry { + type Output = Arc; + fn index(&self, index: &Tag) -> &Self::Output { + &self.0[index] + } +} + #[cfg(test)] mod tests { use super::*; @@ -112,8 +124,8 @@ mod tests { } fn process_tag( - &mut self, - tag: u16, + &self, + tag: Tag, value: crate::tiff::Value, ) -> crate::error::AsyncTiffResult<()> { println!("received {tag:?}: {value:?}"); From b27dc60b9e007bfea1760ee0274c2a0841687099 Mon Sep 17 00:00:00 2001 From: Fee Fladder Date: Thu, 31 Jul 2025 19:17:07 +0200 Subject: [PATCH 6/6] added doc example for exif, exif sample tiff and some sad error handling in ifd::from_tags --- src/ifd.rs | 17 +++- src/metadata/extra_tags.rs | 201 ++++++++++++++++++++++++++++++++++++- src/metadata/mod.rs | 4 +- src/metadata/reader.rs | 2 +- src/predictor.rs | 1 + tests/sample-exif.tiff | Bin 0 -> 262682 bytes 6 files changed, 214 insertions(+), 11 deletions(-) create mode 100644 tests/sample-exif.tiff diff --git a/src/ifd.rs b/src/ifd.rs index b27e28b..5a032d0 100644 --- a/src/ifd.rs +++ b/src/ifd.rs @@ -7,7 +7,7 @@ use num_enum::TryFromPrimitive; use crate::error::{AsyncTiffError, AsyncTiffResult}; use crate::geo::{GeoKeyDirectory, GeoKeyTag}; -use crate::metadata::ExtraTagsRegistry; +use crate::metadata::extra_tags::ExtraTagsRegistry; use crate::predictor::PredictorInfo; use crate::reader::{AsyncFileReader, Endianness}; use crate::tiff::tags::{ @@ -269,11 +269,17 @@ impl ImageFileDirectory { Tag::Unknown(DOCUMENT_NAME) => document_name = Some(value.into_string()?), t => { if extra_tags_registry.contains(&t) { - extra_tags_registry[&t].process_tag(t, value); + extra_tags_registry[&t].process_tag(t, value).map_err(|e| { + if let AsyncTiffError::InternalTIFFError(err) = e { + err + } else { + // TODO fix error handling. This is bad + TiffError::IntSizeError + } + })?; } else { other_tags.insert(tag, value); } - } }; Ok::<_, TiffError>(()) @@ -645,6 +651,11 @@ impl ImageFileDirectory { self.model_tiepoint.as_deref() } + /// the registry holding extra tags + pub fn extra_tags(&self) -> &ExtraTagsRegistry { + &self.extra_tags + } + /// Tags for which the tiff crate doesn't have a hard-coded enum variant. pub fn other_tags(&self) -> &HashMap { &self.other_tags diff --git a/src/metadata/extra_tags.rs b/src/metadata/extra_tags.rs index be7a4fb..2258034 100644 --- a/src/metadata/extra_tags.rs +++ b/src/metadata/extra_tags.rs @@ -1,3 +1,81 @@ +//! # Register parsers for additional tags +//! +//! Simplified example for exif tags parser +//! +//! ``` +//! # use std::sync::{LazyLock, OnceLock, Arc}; +//! # use std::env::current_dir; +//! # use async_tiff::tiff::{Value, tags::Tag}; +//! # use async_tiff::error::AsyncTiffResult; +//! # use async_tiff::reader::{ObjectReader, AsyncFileReader}; +//! # use async_tiff::metadata::TiffMetadataReader; +//! use async_tiff::metadata::extra_tags::{ExtraTags, ExtraTagsRegistry}; +//! # use object_store::local::LocalFileSystem; +//! // see https://www.media.mit.edu/pia/Research/deepview/exif.html#ExifTags +//! // or exif spec: https://www.cipa.jp/std/documents/download_e.html?DC-008-Translation-2023-E +//! // / all tags processed by your extension +//! pub const EXIF_TAGS: [Tag; 3] = [ +//! Tag::Unknown(34665), // Exif IFD pointer +//! Tag::Unknown(34853), // GPS IFD pointer +//! Tag::Unknown(40965), // Interoperability IFD pointer +//! ]; +//! +//! // / the struct that stores the data (using interior mutability) +//! #[derive(Debug, Clone, Default)] +//! pub struct ExifTags { +//! pub exif: OnceLock, +//! pub gps: OnceLock, +//! pub interop: OnceLock, +//! // would also hold e.g. a TiffMetadataReader to read exif IFDs +//! } +//! +//! impl ExtraTags for ExifTags { +//! fn tags(&self) -> &'static [Tag] { +//! &EXIF_TAGS +//! } +//! +//! fn process_tag(&self, tag:Tag, value: Value) -> AsyncTiffResult<()> { +//! match tag { +//! Tag::Unknown(34665) => self.exif.set(value.into_u32()?).unwrap(), +//! Tag::Unknown(34853) => self.gps.set(value.into_u32()?).unwrap(), +//! Tag::Unknown(40965) => self.interop.set(value.into_u32()?).unwrap(), +//! _ => {} +//! } +//! Ok(()) +//! } +//! } +//! +//! #[tokio::main] +//! async fn main() { +//! // create an empty registry +//! let mut registry = ExtraTagsRegistry::new(); +//! // register our custom extra tags +//! registry.register(Arc::new(ExifTags::default())); +//! +//! let store = Arc::new(LocalFileSystem::new_with_prefix(current_dir().unwrap()).unwrap()); +//! let path = "tests/sample-exif.tiff"; +//! let reader = +//! Arc::new(ObjectReader::new(store.clone(), path.into())) as Arc; +//! let mut metadata_reader = TiffMetadataReader::try_open(&reader).await.unwrap(); +//! // get the first ifd +//! let ifd = &metadata_reader +//! .read_all_ifds(&reader, registry) +//! .await +//! .unwrap()[0]; +//! +//! // access by any of our registered tags +//! let exif = ifd.extra_tags()[&EXIF_TAGS[0]] +//! .clone() +//! .as_any_arc() +//! .downcast::() +//! .unwrap(); +//! assert!(exif.exif.get().is_some()); +//! assert!(exif.gps.get().is_some()); +//! // our image doesn't have interop info +//! assert!(exif.interop.get().is_none()); +//! } +//! ``` + use crate::error::{AsyncTiffError, AsyncTiffResult}; use crate::tiff::tags::Tag; use crate::tiff::Value; @@ -8,21 +86,105 @@ use std::ops::Index; use std::sync::Arc; /// Trait to implement for custom tags, such as Geo, EXIF, OME, etc -/// your type should also implement `Clone` +/// +/// your type should also implement `Clone` for blanket implementations of [`ExtraTagsBlankets`] +/// +/// ``` +/// # use async_tiff::tiff::{Value, tags::Tag}; +/// # use async_tiff::error::AsyncTiffResult; +/// use async_tiff::metadata::extra_tags::ExtraTags; +/// # use std::sync::OnceLock; +/// +/// pub const EXIF_TAGS: [Tag; 3] = [ +/// Tag::Unknown(34665), // Exif IFD pointer +/// Tag::Unknown(34853), // GPS IFD pointer +/// Tag::Unknown(40965), // Interoperability IFD pointer +/// ]; +/// +/// // / the struct that stores the data (using interior mutability) +/// #[derive(Debug, Clone, Default)] +/// pub struct ExifTags { +/// pub exif: OnceLock, +/// pub gps: OnceLock, +/// pub interop: OnceLock, +/// // would also hold e.g. a TiffMetadataReader to read exif IFDs +/// } +/// +/// impl ExtraTags for ExifTags { +/// fn tags(&self) -> &'static [Tag] { +/// &EXIF_TAGS +/// } +/// +/// fn process_tag(&self, tag:Tag, value: Value) -> AsyncTiffResult<()> { +/// match tag { +/// Tag::Unknown(34665) => self.exif.set(value.into_u32()?).unwrap(), +/// Tag::Unknown(34853) => self.gps.set(value.into_u32()?).unwrap(), +/// Tag::Unknown(40965) => self.interop.set(value.into_u32()?).unwrap(), +/// _ => {} +/// } +/// Ok(()) +/// } +/// } +/// ``` // Send + Sync are required for Python, where `dyn ExtraTags` needs `Send` and `Sync` pub trait ExtraTags: ExtraTagsBlankets + Any + Debug + Send + Sync { /// a list of tags this entry processes + /// /// e.g. for Geo this would be [34735, 34736, 34737] fn tags(&self) -> &'static [Tag]; /// process a single tag, using internal mutability if needed fn process_tag(&self, tag: Tag, value: Value) -> AsyncTiffResult<()>; } -// we need to do a little dance to do an object-safe deep clone -// https://stackoverflow.com/a/30353928/14681457 -// also object-safe type conversions for downcasting +/// Extra trait with blanket implementations for object-safe cloning and casting +/// +/// Automatically implemented if your type implements [`ExtraTags`] and [`Clone`] +/// +/// ``` +/// # use std::sync::Arc; +/// # use async_tiff::tiff::{Value, tags::Tag}; +/// # use async_tiff::error::AsyncTiffResult; +/// use async_tiff::metadata::extra_tags::ExtraTags; +/// // derive these +/// #[derive(Debug, Clone)] +/// pub struct MyTags; +/// +/// // custom functionality +/// impl MyTags { +/// fn forty_two(&self) -> u32 {42} +/// } +/// +/// // implement ExtraTags +/// impl ExtraTags for MyTags { +/// fn tags(&self) -> &'static [Tag] { +/// &[] +/// } +/// +/// fn process_tag(&self, _tag:Tag, _value:Value) -> AsyncTiffResult<()> { +/// Ok(()) +/// } +/// } +/// +/// fn main() { +/// // allows for deep cloning +/// let my_tags = Arc::new(MyTags) as Arc; +/// let other_my_tags = my_tags.clone_arc(); +/// assert!(Arc::ptr_eq(&my_tags, &my_tags.clone())); +/// assert!(!Arc::ptr_eq(&my_tags, &other_my_tags)); +/// +/// // and downcasting +/// let my_tags_concrete = my_tags.as_any_arc().downcast::().unwrap(); +/// assert_eq!(my_tags_concrete.forty_two(), 42); +/// } +/// ``` +/// +/// This works since blanket implementations are done on concrete types and only +/// their signatures (function pointer) will end up in the vtable +/// pub trait ExtraTagsBlankets { + /// deep clone fn clone_arc(&self) -> Arc; + /// convert to any for downcasting fn as_any_arc(self: Arc) -> Arc; } @@ -40,7 +202,36 @@ where } /// The registry in which extra tags (parsers) are registered -/// This is passed to TODO +/// +/// Pass this to [`crate::metadata::TiffMetadataReader`] when reading. +/// +/// ``` +/// # use async_tiff::reader::{AsyncFileReader, ObjectReader}; +/// # use async_tiff::metadata::TiffMetadataReader; +/// use async_tiff::metadata::extra_tags::ExtraTagsRegistry; +/// # use std::sync::Arc; +/// # use std::env::current_dir; +/// # use object_store::local::LocalFileSystem; +/// +/// #[tokio::main] +/// async fn main() { +/// let registry = ExtraTagsRegistry::default(); +/// +/// let store = Arc::new(LocalFileSystem::new_with_prefix(current_dir().unwrap()).unwrap()); +/// # let path = "tests/sample-exif.tiff"; +/// let reader = +/// Arc::new(ObjectReader::new(store.clone(), path.into())) as Arc; +/// let mut metadata_reader = TiffMetadataReader::try_open(&reader).await.unwrap(); +/// // get first ifd +/// let ifd = &metadata_reader +/// .read_all_ifds(&reader, registry) +/// .await +/// .unwrap()[0]; +/// // retrieve the registry +/// println!("{:?}",ifd.extra_tags()); +/// } +/// ``` +/// #[derive(Debug, Clone)] pub struct ExtraTagsRegistry(HashMap>); diff --git a/src/metadata/mod.rs b/src/metadata/mod.rs index f2792c7..b86ca18 100644 --- a/src/metadata/mod.rs +++ b/src/metadata/mod.rs @@ -58,10 +58,10 @@ //! fetches the first `N` bytes out of a file. //! -mod extra_tags; +pub mod extra_tags; mod fetch; mod reader; -pub use extra_tags::{ExtraTags, ExtraTagsRegistry}; +// pub use extra_tags::{ExtraTags, ExtraTagsRegistry}; pub use fetch::{MetadataFetch, PrefetchBuffer}; pub use reader::{ImageFileDirectoryReader, TiffMetadataReader}; diff --git a/src/metadata/reader.rs b/src/metadata/reader.rs index 34c67c1..cdb49c9 100644 --- a/src/metadata/reader.rs +++ b/src/metadata/reader.rs @@ -4,8 +4,8 @@ use std::io::Read; use bytes::Bytes; use crate::error::{AsyncTiffError, AsyncTiffResult}; +use crate::metadata::extra_tags::ExtraTagsRegistry; use crate::metadata::fetch::MetadataCursor; -use crate::metadata::ExtraTagsRegistry; use crate::metadata::MetadataFetch; use crate::reader::Endianness; use crate::tiff::tags::{Tag, Type}; diff --git a/src/predictor.rs b/src/predictor.rs index 34d6fe5..a206821 100644 --- a/src/predictor.rs +++ b/src/predictor.rs @@ -168,6 +168,7 @@ pub(crate) fn unpredict_hdiff( // From image-tiff /// /// This should be used _after_ endianness fixing +/// pub fn rev_hpredict_nsamp(buf: &mut [u8], bit_depth: u16, samples: usize) { match bit_depth { 0..=8 => { diff --git a/tests/sample-exif.tiff b/tests/sample-exif.tiff new file mode 100644 index 0000000000000000000000000000000000000000..015cd39e53b74d585d92a59d0a2e8a16803502d1 GIT binary patch literal 262682 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