I'm writing an open source image signature/comparison system.

I have the algorithm down, but in certain circumstances, the image has to be resized (possibly on only one axis) before the signature is generated. (I'll explain why, if you really need me to.) The problem is this: I'm planning on releasing the algorithm to the public so other developers can use it. Because of this, the data that one program produces (maybe written in .Net using GDI+) will need to match the data from another program (perhaps written in c++ and using an integer array to hold the image).

The possible problem here is if GDI+ resizes the pixels individually or applies some smoothing algorithm to make the image appear nicer, that might affect the signatures and the same exact image will have slightly different signatures across programs.

Though I do have access to the bits in the bitmap, I'd rather not write my own resizing algorithm if I don't need to.

Do you know if GDI+ smooths the image before/after resizing, and if so, can I turn that off? Does the SmoothingMode property apply to this? Alternatively, to make sure I get identical results across systems (and were not talking porting it to mono) SHOULD I write my own resize algorithm?

[The only thing I'm using GDI+ to do is to resize the image if needed. Everything else is done with math on an array of integers.]