diff --git a/imageflow_core/src/flow/nodes/watermark.rs b/imageflow_core/src/flow/nodes/watermark.rs index 5c8a4113e..2bc53d61c 100644 --- a/imageflow_core/src/flow/nodes/watermark.rs +++ b/imageflow_core/src/flow/nodes/watermark.rs @@ -84,7 +84,9 @@ impl NodeDefOneInputExpand for WatermarkDef{ canvas_color: None }; - let constraint_results = imageflow_riapi::ir4::process_constraint(input.w, input.h, &constraint).unwrap(); //TODO: fix unwrap + let watermark_info = ctx.job.get_image_info(watermark.io_id).map_err(|e| e.at(here!()))?; + + let constraint_results = imageflow_riapi::ir4::process_constraint(watermark_info.image_width, watermark_info.image_height, &constraint).unwrap(); //TODO: fix unwrap let w = constraint_results.scale_to.width() as u32; let h = constraint_results.scale_to.height() as u32; diff --git a/imageflow_core/tests/visuals.rs b/imageflow_core/tests/visuals.rs index 1f85511f6..94bde8d8c 100644 --- a/imageflow_core/tests/visuals.rs +++ b/imageflow_core/tests/visuals.rs @@ -236,6 +236,42 @@ fn test_watermark_image_command_string() { assert!(matched); } +#[test] +fn test_watermark_image_small() { + let matched = compare_multiple(Some(vec![ + IoTestEnum::Url("https://s3-us-west-2.amazonaws.com/imageflow-resources/test_inputs/waterhouse.jpg".to_owned()), + IoTestEnum::Url("https://s3-us-west-2.amazonaws.com/imageflow-resources/test_inputs/1_webp_a.sm.png".to_owned()) + ]), 500, + "WatermarkSmall", POPULATE_CHECKSUMS, DEBUG_GRAPH, vec![ + Node::Decode {io_id: 0, commands: None}, + Node::Constrain(imageflow_types::Constraint{ + w: Some(800), + h: Some(800), + hints: None, + gravity: None, + mode: ConstraintMode::Within, + canvas_color: None + }), + Node::Watermark(imageflow_types::Watermark{ + io_id: 1, + gravity: Some(imageflow_types::ConstraintGravity::Percentage {x: 100f32, y: 100f32}), + fit_box: Some(imageflow_types::WatermarkConstraintBox::ImagePercentage {x1: 0f32, y1: 0f32, x2: 90f32, y2: 90f32}), + fit_mode: Some(imageflow_types::WatermarkConstraintMode::Within), + opacity: Some(0.9f32), + hints: Some(imageflow_types::ResampleHints{ + sharpen_percent: Some(15f32), + down_filter: None, + up_filter: None, + scaling_colorspace: None, + background_color: None, + resample_when: None, + sharpen_when: None + }) + }) + ] + ); + assert!(matched); +} // Does not reproduce across different compiler optimizations // #[test] // fn test_image_rs_jpeg_decode(){ diff --git a/imageflow_core/tests/visuals/checksums.json b/imageflow_core/tests/visuals/checksums.json index f64433f14..676057fa3 100644 --- a/imageflow_core/tests/visuals/checksums.json +++ b/imageflow_core/tests/visuals/checksums.json @@ -31,7 +31,8 @@ "Test_Apply_Orientation_Portrait_7.jpg": "0002098ACFD00B380_0AE4839D1D9B04C57", "Test_Apply_Orientation_Portrait_8.jpg": "026BD1030254479A0_0AE4839D1D9B04C57", "Test_Jpeg_Simple.jpg": "018BC932FB29F2C53_0AF9F040B874D83F7", - "Watermark1": "06E7792859C160C4C_0DE3336C466C67DD9", + "Watermark1": "008A242F2FBED3C1D_0DE3336C466C67DD9", + "WatermarkSmall": "09BF9877BE2CB36AC_0DE3336C466C67DD9", "WhiteBalanceNight": "0D84206BD2DD308DA_05C9231C6124D62A8", "encode_frymire": "07FC2C05A26B49BF1.png", "encode_gradients": "00D10466A8552DCF6.png",