Ну, я дал ему шанс и попытался воспроизвести проблему с кодом, приведенным выше. Вот примерно то, что я сделал:
Random r = new Random();
for (int i = 0; i < max; i++)
{
System.Diagnostics.Debugger.Break()
int size = 1 + i;
int width = 1 + i;
SaveBitmap(@"C:\Projects\test.jpg", ImageFormat.Jpeg, "hello", size, width, Color.Black, Color.White, "Arial", size, true);
SaveBitmap(@"C:\Projects\test.png", ImageFormat.Jpeg, "hello", size, width, Color.Black, Color.White, "Arial", size, true);
SaveBitmap(@"C:\Projects\test.jpg", ImageFormat.Jpeg, "hello", size, width, Color.Black, Color.White, "Arial", size, false);
SaveBitmap(@"C:\Projects\test.png", ImageFormat.Jpeg, "hello", size, width, Color.Black, Color.White, "Arial", size, false);
}
public static void SaveBitmap(string filename, ImageFormat format, string text, int height, int width, Color foregroundColor, Color backgroundColor, string fontName, int fontSize, bool antialias)
{
using (Image source = CreateBitmap(text, height, width, foregroundColor, backgroundColor, fontName, fontSize, antialias))
source.Save(filename, format);
using (Image imgLoaded = Bitmap.FromFile(filename))
{
if (imgLoaded.RawFormat.Guid != format.Guid)
throw new InvalidOperationException();
}
}
Это выполняется без проблем, и проверка на то, что if (imgLoaded.RawFormat.Guid! = Format.Guid) никогда не прерывается в отладчике. Я предполагаю, что у вас есть немного больше кода, чем подпрограмма CreateBitmap, опубликованная выше.
Моя рекомендация:
Измените свой код и вставьте утверждение проверки в вышеупомянутый SaveBitmap () сразу после вашего вызова Image.Save (). Тогда иди разбей его и посмотри, как ты туда попал ...