singlepost

Сохранение файла в формате bmp длится слишком долго… << На главную или назад  

…а все потому, что способ у меня какой-то совершенно бестолковый!!!:)

hDC = GetDC(hWnd);
bmp.CreateDib24(H.width, H.height, "1.bmp");
for (y = 0; y < H.height; ++y)
{
for (x = 0; x < H.width; ++x)
{
color = GetPixel(H.ImageDC, x, H.height-y);
bmp.SetPixel(x, y, color);
}
}
ReleaseDC(hWnd, hDC);
bmp.StoreDib24();

H – Объект класса, реализующего рисование некоторой фигуры (пусть просто изображение)

12 ответов в теме “Сохранение файла в формате bmp длится слишком долго…”

  1. 12
    Антон Водостоев ответил:

    Спасибо, сел разбираться пока с GetDIBits, но с CImage непременно поколдую тоже!…:)

  2. 11
    Александр Чигринец ответил:

    Ну, если на чистом API, то GetDIBits в руки и вперёд. :)

  3. 10
    Александр Ренев ответил:

    тролль ^^

  4. 9
    Дмитрий Матвеев ответил:

    Вероятно человек пишет на чистом API и ATL & MFC не приемлемы, хотя CImage есть действительно удобная штука

    #8
    Хде тролли? Дотнет зло

  5. 8
    Александр Чигринец ответил:

    Читать попиксельно, действительно, очень медленно. Я бы посмотрел в сторону функции GetDIBits.
    В ATL (или в MFC ??? ) есть класс CImage, который позволяет работать с картинками и сохранять их в файл быстро и удобно. Нужно ли изобретать велосипед?

  6. 7
    Александр Ренев ответил:

    тролли зло

  7. 6
    Дмитрий Матвеев ответил:

    Сишарп зло ибо дотнет

  8. 5
    Серега Решетникъ ответил:

    пардон

  9. 4
    Александр Ренев ответил:

    сишарп к винапи не имеет отношения, он использует функции .net фреймворка)

  10. 3
    Серега Решетникъ ответил:

    я в этом семестре писал курсовик по теме "Простейший графический редактор",для сохранения я сделал следующее ток код на C# если что.

    private void saveToolStripButton1_Click(object sender, EventArgs e)
    {
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
    switch (saveFileDialog1.FilterIndex)
    {
    case 1:
    bmp.Save(saveFileDialog1.FileName, ImageFormat.Jpeg);
    break;
    case 2:
    bmp.Save(saveFileDialog1.FileName, ImageFormat.Bmp);
    break;
    case 3:
    bmp.Save(saveFileDialog1.FileName, ImageFormat.Png);
    break;
    default:
    bmp.Save(saveFileDialog1.FileName, ImageFormat.Gif);
    break;
    }
    bmp.Save(saveFileDialog1.FileName);
    }
    }

  11. 2
    Александр Ренев ответил:

    почитай тут
    //msdn.microsoft.com/en-us/library/ms532314(VS.85).aspx
    достаточно понятный пример

  12. 1
    Антон Водостоев ответил:

    И вот он каждый для каждого пиксела изображения определяет цвет, что, если я не ошибаюсь происходит очень медлено и вообще, нежелательно. После этот цвет пишет в нужный мне файл.
    для рисунка 1280×1024 сохранение длится около 5 секунд!!!
    Ввиду отсутствия опыта программирования с использованием WinAPI, не знаю как сделать по уму.

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.