Sharp keeps one set of resize options per pipeline, so the chained shrink-then-grow collapsed into a single resize back to the original size and both the full-image and region paths returned the input untouched.
Run the two resizes as separate pipelines, pinned to fit: "fill" so a skewed block grid cannot crop the picture.
Also in this change:
- stop passing quality to the PNG encoder, which Sharp reads as "quantise to a palette" and which dithered the flat blocks and inflated the file
- replace the region instead of blending into it, so a part-transparent image no longer shows the original through the mosaic
- throw on unreadable dimensions rather than falling back to a 1x1 image
Five new integration tests on content-bearing fixtures, each verified against a deliberate mutant.
Fixes#678