Download libraries/rawkit/src/metadata/identify.rs from openfree/graphite2: direct link, hf CLI and curl.
- Browser
- Download file 1.07 kB
-
https://huggingface.co/spaces/openfree/graphite2/resolve/main/libraries/rawkit/src/metadata/identify.rs
- Command line
-
hf download hf://spaces/openfree/graphite2/libraries/rawkit/src/metadata/identify.rs
-
curl -L -o identify.rs https://huggingface.co/spaces/openfree/graphite2/resolve/main/libraries/rawkit/src/metadata/identify.rs
1.07 kB
| use crate::tiff::file::TiffRead; | |
| use crate::tiff::tags::{Make, Model, Tag}; | |
| use crate::tiff::{Ifd, TiffError}; | |
| use rawkit_proc_macros::Tag; | |
| use std::io::{Read, Seek}; | |
| const COMPANY_NAMES: [&str; 22] = [ | |
| "AgfaPhoto", | |
| "Canon", | |
| "Casio", | |
| "Epson", | |
| "Fujifilm", | |
| "Mamiya", | |
| "Minolta", | |
| "Motorola", | |
| "Kodak", | |
| "Konica", | |
| "Leica", | |
| "Nikon", | |
| "Nokia", | |
| "Olympus", | |
| "Ricoh", | |
| "Pentax", | |
| "Phase One", | |
| "Samsung", | |
| "Sigma", | |
| "Sinar", | |
| "Sony", | |
| "YI", | |
| ]; | |
| struct CameraModelIfd { | |
| make: Make, | |
| model: Model, | |
| } | |
| pub struct CameraModel { | |
| pub make: String, | |
| pub model: String, | |
| } | |
| pub fn identify_camera_model<R: Read + Seek>(ifd: &Ifd, file: &mut TiffRead<R>) -> Option<CameraModel> { | |
| let mut ifd = ifd.get_value::<CameraModelIfd, _>(file).unwrap(); | |
| ifd.make.make_ascii_lowercase(); | |
| for company_name in COMPANY_NAMES { | |
| let lowercase_company_name = company_name.to_ascii_lowercase(); | |
| if ifd.make.contains(&lowercase_company_name) { | |
| return Some(CameraModel { | |
| make: company_name.to_string(), | |
| model: ifd.model, | |
| }); | |
| } | |
| } | |
| None | |
| } | |