From 427bfe3fa99d6fa3cfb60907353c6d10c9525663 Mon Sep 17 00:00:00 2001 From: Daniel Vogelbacher Date: Sat, 30 Mar 2024 14:31:05 +0100 Subject: [PATCH] FIX: DNG DefaultCropSize to Rect calculation Because of this bug, converting a DNG file into a new DNG file shrinks the crop size. --- .../SIGMA_FP_647_20240229_000001_4k_12bit.DNG.analyze.yaml | 4 ++-- .../SIGMA_FP_648_20240229_000001_4k_10bit.DNG.analyze.yaml | 4 ++-- .../SIGMA_FP_650_20240229_000001_4k_8bit.DNG.analyze.yaml | 4 ++-- .../SIGMA_FP_651_20240229_000001_2k_12bit.DNG.analyze.yaml | 4 ++-- .../SIGMA_FP_652_20240229_000001_2k_10bit.DNG.analyze.yaml | 4 ++-- .../SIGMA_FP_653_20240229_000001_2k_8bit.DNG.analyze.yaml | 4 ++-- .../SIGMA fp/cinemadng/SIGMA_FP_6k_14bit.DNG.analyze.yaml | 4 ++-- rawler/src/decoders/dng.rs | 5 +++-- 8 files changed, 17 insertions(+), 16 deletions(-) diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_647_20240229_000001_4k_12bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_647_20240229_000001_4k_12bit.DNG.analyze.yaml index 8ef63dc62..cbc69cf9a 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_647_20240229_000001_4k_12bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_647_20240229_000001_4k_12bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 3832 - h: 2155 + w: 3840 + h: 2160 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_648_20240229_000001_4k_10bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_648_20240229_000001_4k_10bit.DNG.analyze.yaml index 4ac638698..2bb02ce86 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_648_20240229_000001_4k_10bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_648_20240229_000001_4k_10bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 3832 - h: 2155 + w: 3840 + h: 2160 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_650_20240229_000001_4k_8bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_650_20240229_000001_4k_8bit.DNG.analyze.yaml index fd342821a..95beb62cb 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_650_20240229_000001_4k_8bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_650_20240229_000001_4k_8bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 3832 - h: 2155 + w: 3840 + h: 2160 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_651_20240229_000001_2k_12bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_651_20240229_000001_2k_12bit.DNG.analyze.yaml index dc6d7b3a4..6e97a31ec 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_651_20240229_000001_2k_12bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_651_20240229_000001_2k_12bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 1912 - h: 1075 + w: 1920 + h: 1080 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_652_20240229_000001_2k_10bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_652_20240229_000001_2k_10bit.DNG.analyze.yaml index 240d4e724..6b78977f5 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_652_20240229_000001_2k_10bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_652_20240229_000001_2k_10bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 1912 - h: 1075 + w: 1920 + h: 1080 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_653_20240229_000001_2k_8bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_653_20240229_000001_2k_8bit.DNG.analyze.yaml index 93df195d8..a935ca65c 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_653_20240229_000001_2k_8bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_653_20240229_000001_2k_8bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 8 y: 5 d: - w: 1912 - h: 1075 + w: 1920 + h: 1080 activeArea: p: x: 0 diff --git a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_6k_14bit.DNG.analyze.yaml b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_6k_14bit.DNG.analyze.yaml index 363ff6b15..37b9477ed 100644 --- a/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_6k_14bit.DNG.analyze.yaml +++ b/rawler/data/testdata/cameras/Sigma/SIGMA fp/cinemadng/SIGMA_FP_6k_14bit.DNG.analyze.yaml @@ -14,8 +14,8 @@ data: x: 32 y: 21 d: - w: 5968 - h: 3979 + w: 6000 + h: 4000 activeArea: p: x: 0 diff --git a/rawler/src/decoders/dng.rs b/rawler/src/decoders/dng.rs index 529c52ddb..6692f1dd8 100644 --- a/rawler/src/decoders/dng.rs +++ b/rawler/src/decoders/dng.rs @@ -18,6 +18,7 @@ use crate::formats::tiff::Rational; use crate::formats::tiff::Value; use crate::imgop::xyz::FlatColorMatrix; use crate::imgop::xyz::Illuminant; +use crate::imgop::Dim2; use crate::imgop::Point; use crate::imgop::Rect; use crate::packed::*; @@ -387,8 +388,8 @@ impl<'a> DngDecoder<'a> { if let Some(crops) = raw.get_entry(DngTag::DefaultCropOrigin) { let p = Point::new(crops.force_usize(0), crops.force_usize(1)); if let Some(size) = raw.get_entry(DngTag::DefaultCropSize) { - let s = Point::new(size.force_usize(0), size.force_usize(1)); - return Some(Rect::new_with_points(p, s)); + let d = Dim2::new(size.force_usize(0), size.force_usize(1)); + return Some(Rect::new(p, d)); } } None