Best way to resample a signal (image)?
An FFT approach to filtering/resampling should work fine, but you don't want to just truncate or pad with zeros.  That will add effects to the image.  See here for more information about FFT resampling.

You could also just do a FIR filter.  If you upsample by a ratio of $\frac{p}{q}$ then you would want your anti-aliasing filter to have a normalized bandwidth of $\frac{q}{p}$.  You could make the bandwidth a little smaller to get rid of more alias energy, as desired.  If you downsample by a ratio of $\frac{p}{q}$ then you would want the filter bandwidth to also be about $\frac{p}{q}$.  Again, you could make it a little smaller to get rid of more alias energy.

Once you have your filter you just need to do a two-dimensional convolution and trim the extra resulting samples on each edge.  Many signal processing libraries have built-in two-dimensional filtering routines that can do this for you.