WPF is designed to be able to resize images in real time for display (using graphics card acceleration) and so is biased towards speed over quality.
If you want decent quality you should use System.Drawing.Bitmap
to do your resizing:
System.Drawing.Bitmap resizedImage;
using(System.Drawing.Image originalImage = System.Drawing.Image.FromFile(filePath))
resizedImage = new System.Drawing.Bitmap(originalImage, newSize);
// Save resized picture
resizedImage.Save(resizedFilePath, System.Drawing.Imaging.ImageFormat.Jpeg);
resizedImage.Dispose();
The quality still won't be great - JPEG is a lossy image format and fidelity will be lost by loading and saving and also by the Bitmap
classes crude scaling. If quality must be as high as possible then you should consider using an imaging library such as DevIL, which will do a better job of producing a smoothly resized image.