2D Fourier downsampling
For a 2D FFT (fft2), first do an "fftshift" to center the low frequency portion of the 2D FFT in the center of the matrix. Select this inner region and then do an inverse 2D FFT (ifft2) of the fftshifted result. 

The format of the result also needs to be 8-bit unsigned.

The image below depicts the low frequency portion of the frequency domain of the image in green centered on the origin after using the fftshift command (my apologies to our B/G color blind users!). After executing fft2, the pixel corresponding with the lowest frequency will be in the upper left hand corner. fftshift will swap quadrant 2 and quadrant 4, and swap quadrant 1 with quadrant 3 resulting in the lowest frequency pixel to be at the origin. This simplifies the selection of the lowest frequency quartile of the image and after processing the ifft2 of the ifftshifted result will provide the half dimensioned image as desired. 



The devil is in the details to properly shift and select the image properly, so see the MATLAB/ Octave code below that properly does the proper selection as well as the scaling. 

d = 2;   # decimation rate
dim = size(image);
m = floor(dim/2)+1;
n = floor(m/d);
fimage = fftshift(fft2(image));
# select middle
fimageh = fimage(m(1)-n(1):m(1)+n(1),m(2)-n(2):m(2)+n(2),:);
# ifft
image2 = uint8(real(ifft2(ifftshift(fimageh/d^2))));
imshow(image2);


Note that the code includes taking the real part, but if done correctly all the imaginary terms should be insignificant. However uint8 will not operate on a complex numbers.

Test image before (800x1200):



Test image after for d=2 (401x601):



image source: https://twitter.com/quirktree/status/1079911361122131968