[Pixman] On sampling (Re: Add a new benchmarker targeting affine operations)

Bill Spitzak spitzak at gmail.com
Fri Apr 24 13:00:19 PDT 2015


On 04/24/2015 07:31 AM, Pekka Paalanen wrote:

> Would it be good to set a rule of thumb, that when you are scaling
> images, first compute the final size, and then compute the
> transformation paramaters for Pixman, regardless from which one you
> start with?

If I understand what you are asking for, the answer is no.

When scaling images do not be confused by the pixel size or pixel 
centers. The correct transform is the one that places the outer corners 
of the source image (ie integers 0,0 and w,h for the entire contents of 
a w,h sized image) at the outer corners of the desired destination 
quadrilateral.

This will produce the correct filtering and the correct position for the 
image. If you gradually change the destination rectangle, the image will 
scale smoothly with it. Another way to look at is that this rule is the 
one so that if you transformed to an intermediate image and then did a 
further transform to the final, the result will not be shifted or scaled 
differently (it may be blurrier but that blur will be centered with no 
visible shift).

The confusion is that filtering will sample outside the source 
rectangle, and the filtering can produce non-zero outside the 
destination rectangle. This effects the calculation of bounding boxes, 
and yes it gets complicated if you want an accurate bounding box. But 
you should *not* use this to determine the desired transformation.


More information about the Pixman mailing list