Resize image with good quality and less weight
Variable type choice. Why do you use Int16 and float? Most likely you'll be running on a 32-bit or 64-bit machine, and even the 32-bit machines will be optimized for math operations using double. I know you don't need perfect accuracy, but using the smaller types is not likely to save you any space or time. The optimizer will probably convert them to Int32 and double anyway and then just round them off/truncate/extend.
You should declare variables as late as possible. Ideally right before they're initialized. In particular, there's no point in declaring a variable, setting its initial value to 0, and then on the next line setting its value to what you really wanted.
What is the purpose of nPercent, destX, and destY? You calculate them then throw them away.
I don't think you tested this code. You have an if block that swaps newWidth and newHeight, but nothing that ever swaps them back. What's the code intended to do?