.NET - Bitmap.Save ignora Bitmap.SetResolution en Windows 7

Estoy escribiendo una aplicación .NET 4 que importa y guarda imágenes para imprimir. Es importante que la resolución de las imágenes guardadas (ppp y no las dimensiones de los píxeles) se establezca en el valor que especificamos para que se impriman correctamente.

Algunas de las imágenes que importamos vienen sin el valor de resolución (EXIF incorrecto cuando se generaron), por lo que debemos corregirlo antes de escribirlas. Usamos Bitmap.SetResolution para eso. Funciona bien en XP y Windows 8, pero cuando escribimos (Bitmap.Save) las imágenes en Windows 7, siempre se escriben con la meta información de resolución original, ignorando SetResolution.

Aquí hay una prueba que hicimos, funciona en XP y 8, no en 7.

string originalFile = @"D:\temp\img\original_img.jpg";
string newFile = @"D:\temp\img\new_img.jpg";

Bitmap bitmap = (Bitmap)Image.FromFile(originalFile);
bitmap.SetResolution(200, 200);
bitmap.Save(newFile, ImageFormat.Jpeg);

Image image = Image.FromFile(newFile);
int dpiX = (int)Math.Round(image.HorizontalResolution, MidpointRounding.ToEven);
int dpiY = (int)Math.Round(image.VerticalResolution, MidpointRounding.ToEven);
Console.WriteLine("DPI is {0} x {1}", dpiX, dpiY);

Antes de guardar, la depuración siempre muestra la resolución correcta asignada por SetResolution, la imagen guardada es donde está el problema.

Esto es probablemente lo que se informó aquí:http://social.msdn.microsoft.com/Forums/vstudio/en-US/62368caa-05f4-4798-9c59-5d82f881a97c/systemdrawingbitmapsetresolution-is-completely-broken-on-windows-7?forum=netfxbcl

Pero el problema parece que sigue sin resolverse. ¿Realmente no hay manera de hacerlo funcionar? ¿Tengo que usar bibliotecas extra para esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta