Open GoogleCodeExporter opened 9 years ago
Are you scaling up or down?
Original comment by fbarch...@google.com
on 4 Jun 2013 at 3:14
[deleted comment]
scaling up.
1.scaling up original image *4 bigger use kFilterBilinear .
2.fast changing-over two pictures in Windows photo viewer.
3.you can see the shift to original.
Original comment by istring0...@gmail.com
on 5 Jun 2013 at 8:05
in ScaleARGB is there can be edit to
if (filtering) {
// Scale step for bilinear sampling renders last pixel once for upsample.
if (dst_width <= Abs(src_width)) {
dx = (Abs(src_width) << 16) / dst_width;
x = (dx >> 1) - 32768;
} else if (dst_width > 1) {
dx = ((Abs(src_width) - 1) << 16) / (dst_width - 1);
}
if (dst_height <= src_height) {
dy = (src_height << 16) / dst_height;
y = (dy >> 1) - 32768;
} else if (dst_height > 1) {
dy = ((src_height ) << 16) / (dst_height); //here edited
}
} else {....}
Original comment by istring0...@gmail.com
on 5 Jun 2013 at 8:10
The line is intended to be
dy = ((src_height - 1) << 16) / (dst_height - 1);
which ensures the last pixel of the destination is exactly the last line of
source.
if you do
dy = ((src_height ) << 16) / (dst_height); //here edited
and start at y = 0, it'll shift the image up 1/2 pixel and filter with the
pixel off the bottom of the image.
What it should be is
dy = ((src_height ) << 16) / (dst_height);
but with y = -0.5 to start, filtering with the pixel just before the first row,
and just after the last row. But that requires clamping, which is slow on the
horizontal, so Y is done the same as X, for consistency.
The step rate of
dy = ((src_height - 1) << 16) / (dst_height - 1);
will stretch from the first and last source pixel, to the first and last
destination pixel. The image will have an overall half pixel zoom on both
edges, but equally and reversible.
Original comment by fbarch...@google.com
on 8 Jun 2013 at 8:53
thanks.
Original comment by istring0...@gmail.com
on 9 Jun 2013 at 1:28
Original comment by fbarch...@google.com
on 19 Jun 2013 at 8:40
Reopening, as another use case exhibites a 1 pixel shift.
The issue appears to be upsampling.
Original comment by fbarch...@google.com
on 20 Sep 2013 at 4:10
Original issue reported on code.google.com by
istring0...@gmail.com
on 3 Jun 2013 at 9:00