Сохранение bmp на диске

Тема в разделе "WASM.BEGINNERS", создана пользователем ActioN, 3 июл 2005.

  1. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    В Static загружен IMAGE_BITMAP. Как его сохранить на диск?
     
  2. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Говорят, надо с канвой статика работать, читать по пикселам... Скажите хоть в сторону какой api-функции надо копать.
     
  3. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257




    Хэндл битмапа есть? Если есть, то в аттаче построение файла .bmp из hBitmap





    [​IMG] 1827747171__BITMAPFILEHEADER.inc
     
  4. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    БОЛЬШОЕ СПАСИБО, cresta. Я думал уж никто и не замечает эту тему
     
  5. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    cresta, компилятор ругается на строку:

    mov pBuf,FUNC(LocalAlloc,LMEM_FIXED,bmpinfo.bmiHeader.biSizeImage)

    SyntaxError ',':dntknw:
     
  6. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ActioN

    Найди макро FUNC или перепиши строчку на
    Код (Text):
    1. invoke LocalAlloc,LMEM_FIXED,bmpinfo.bmiHeader.biSizeImage
    2. mov  pBuf,eax
     
  7. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    IceStudent, cresta, если учитывать, что в hBitmap будет handle картинки, которую я загружаю из ресурса, то при дальнейшем выполнении кода и сохранении этой картинки в bmp-файл сам bmp-файл получается размером 0х0 (54 байта). Что я нетак делаю?

    [​IMG] _874427551__img.rar
     
  8. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257




    Естественно. Если бы всё было так, было бы 4096 байта, а не 54.

    hdc ведь нужно получить, прежде чем передавать его в GetDIBits.



    Ну и освободить потом его, когда не нужен станет.



    P.S.

    Флаг в CreateFile изменил на CREATE_ALWAYS, а то переписывать файл не будет, если он уже существует. Т.е. единожды сделаный файл 54 байт никогда не перепишется, и так и не узнаешь, заработал код или нет :)



    [​IMG] _1828900088__img.asm
     
  9. ActioN

    ActioN New Member

    Публикаций:
    0
    Регистрация:
    1 апр 2005
    Сообщения:
    160
    Адрес:
    Ukraine
    Теперь все работает, спасибо.

    Интересно, почему размер исходного bmp-файла - 3 128 байт

    а сохраненного - 4 150 байт.
     
  10. cresta

    cresta Active Member

    Публикаций:
    0
    Регистрация:
    13 июн 2004
    Сообщения:
    2.257
    У исходного глубина цвета 24 бита, у сохраненного - 32.