pub fn resize_and_pad(
img: &RgbImage,
vcfg: &VisionConfig,
operator_max: Option<usize>,
) -> RgbImageExpand description
Fit img inside the smart_resize canvas preserving aspect, then zero-pad
right/bottom to the canvas exactly. Returns the padded canvas.
★ VERIFIED against the reference’s own pixel_values (2026-09-22), not
assumed. Two properties were read straight out of the golden for image c
(640x360 -> a 644x364 canvas), and both had a plausible alternative:
- The pad is BLACK PIXELS, i.e. it precedes normalization. Padded
cells in the golden hold exactly
(0 - mean)/std=(-1.7926, -1.7520, -1.4801), not0.0.REFERENCE.md§5 recordedtvF.pad(..., fill=0)without pinning it relative torescale/normalize; this settles it. - The fit NEVER UPSCALES. The golden’s content occupies rows 0..360 and columns 0..640 — the source dimensions, unresampled — with the remaining 4 rows and 4 columns padded. An aspect-fit that scaled up to fill the canvas (scale 1.00625 here) would have produced a 362x644 content box and only 2 pad rows. Every sampled pixel of the golden matches the raw PNG normalized in place, to 4e-4 (float32 storage).
tests/glm_vision_preprocess_pin.rs pins both against the fixtures.