Во-первых, при использовании растровых изображений я бы предостерегал от использования их из статического класса, если в любое время вы хотите использовать более одного потока.Ни одно растровое изображение не может использоваться более чем одним потоком одновременно.Например, если вы в следующий раз сделали это в одном потоке:
using(Graphics g = Graphics.FromImage(bmpCrop)
{
// do something
}
, а в другом
int w = bmpCrop.Width
вы получите недопустимое исключение параметра.
Далее, вв вашем примере я вижу три экземпляра изображения ...
Сейчас вы неРасполагая bmpImage в этой функции и нужно будет.После этого вызова вызывающие в какой-то момент будут обязаны избавиться от img и bmpCrop