У меня есть следующий код:Общий GDI + ошибка возникает при сохранении изображения
static void Main(string[] args)
{
const int SAMPLE_SIZE = 256 * 256;
float[] samples = new float[SAMPLE_SIZE];
using (Bitmap bmp = new Bitmap(SAMPLE_SIZE, 1))
{
for (int i = 0; i < samples.Length; ++i)
{
int c = (int)(samples[i] * 127 + 128);
bmp.SetPixel(i, 0, Color.FromArgb(c, c, c));
}
bmp.Save("result.png"); //A generic error occurred in GDI+.
}
}
В аварии программы при сохранении растрового изображения. Когда я устанавливаю SAMPLE_SIZE
на меньшее значение, никаких исключений не выбрасывается. Такая же ошибка возникает на x64 и x86.
Я попытался сохранить промежуточный поток, но та же ошибка возникает.
using (MemoryStream stream = new MemoryStream())
{
bmp.Save(stream, ImageFormat.Png);
stream.WriteTo(fs);
}
Почему это происходит? Ошибка возникает на x64. Может ли это быть проблемой памяти? Размеры изображения составляют 65536x1, что не так уж велико в плане зарезервированных байтов.
посмотрите здесь https://code.google.com/p/pngcs/, чтобы вам не нужно хранить большие файлы изображений в памяти – MethodMan
Спасибо. Я знаю об этом. Однако мне интересно, почему это происходит. –
Попробуйте «новый битмап» (bmp) .Save («result.png»); ' – cubrr