bitbtn

Discussion in 'WASM.WIN32' started by rodger, Apr 23, 2008.

  1. rodger

    rodger New Member

    Blog Posts:
    0
    Joined:
    Nov 10, 2007
    Messages:
    363
    Добрый вечер всем. Жутко меня интересует как превратить любой файл в бмп-шную картинку, мне сказали авторитеные люди что посредством апи функции bitbtn, но как не особо понятно, мол там в контектсе устройтва нужно как то прописать путь к исходному файлу. Внимательно выслушаю все правдоподобные мысли.
     
  2. Novi4ek

    Novi4ek New Member

    Blog Posts:
    0
    Joined:
    Aug 3, 2007
    Messages:
    317
    меня жутко интересует что значит превратить файл в бмпшную картинку....
     
  3. Com[e]r

    Com[e]r Com[e]r

    Blog Posts:
    0
    Joined:
    Apr 20, 2007
    Messages:
    2,624
    Location:
    ого..
    вероятно, имелось в виду - впаять данные в bmp.
    я о таком частенько слышал, но нарочно не вникал.
    у bmp структура очень примитивная, туда фиг что запрячешь,
    я бы лучше взял gif, ибо он является архивом PNGшек,
     
  4. Sol_Ksacap

    Sol_Ksacap Миша

    Blog Posts:
    0
    Joined:
    Mar 6, 2008
    Messages:
    623
    ШТО? ಠ_ಠ

    rodger
    Ты испытываешь необходимость в заполнении BITMAPFILEHEADER, BITMAPINFOHEADER.

    Code (Text):
    1.     BITMAPFILEHEADER FileHeader;
    2.     BITMAPINFOHEADER InfoHeader;
    3.     memset(&FileHeader, 0, sizeof(FileHeader));
    4.     memset(&InfoHeader, 0, sizeof(InfoHeader));
    5.  
    6.     FileHeader.bfType = 'MB';   // LE-BE
    7.     FileHeader.bfOffBits = sizeof(FileHeader) + sizeof(InfoHeader) + 2; // +2 for dword align
    8.     FileHeader.bfSize = FileHeader.bfOffBits + RgbSize;
    9.  
    10.     InfoHeader.biSize = sizeof(InfoHeader);
    11.     InfoHeader.biWidth = SideSize;
    12.     InfoHeader.biHeight = SideSize;
    13.     InfoHeader.biPlanes = 1;
    14.     InfoHeader.biBitCount = 32;
    15.     InfoHeader.biCompression = BI_RGB;
    Соответственно, по смещению sizeof(FileHeader) + sizeof(InfoHeader) + 2 от начала конечного файла должен располагаться массив данных исходного файла.

    Лол, вот так выглядит блокнот:
    [​IMG]
     
  5. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    http://www.dumpanalysis.org/blog/index.php/2007/08/04/visualizing-memory-dumps/
     
  6. rodger

    rodger New Member

    Blog Posts:
    0
    Joined:
    Nov 10, 2007
    Messages:
    363
    Громадное тебе спасибо за исходник и за толковые коментарии, я эти методы долго искал. Спецификацию графических файлов давно скачал и некоторые исходники по стенографии, но были проблемы в работе моего приложения.
     
  7. rodger

    rodger New Member

    Blog Posts:
    0
    Joined:
    Nov 10, 2007
    Messages:
    363
    Текст читал, программу скачал, но исходников там нет. Все равно спасибо за внимание.
     
  8. Nero_n

    Nero_n New Member

    Blog Posts:
    0
    Joined:
    Apr 25, 2008
    Messages:
    33
    rodger
    Имей в виду, что в быстрокоде Sol'а не учитывается факт того, что каждый 4й байт не оказывает влияния на рисунок - составляющая 'alpha' не играет роли даже в 32х-битных bmp. Из-за этого конверсия такого bmp в, скажем, png, приведет к невозможности восстановления исходных данных. (Я-то сразу увидел, что приложенная картинка notepad.exe выглядит не как код х86).

    А высоту битмапу лучше ставить отрицательную (нагляднее).
     
  9. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    Joined:
    Jul 10, 2005
    Messages:
    2,939
    Если требования к проге позволяют юзаю freeimage. Решает массу вопросов.
     
  10. IceStudent

    IceStudent Active Member

    Blog Posts:
    0
    Joined:
    Oct 2, 2003
    Messages:
    4,300
    Location:
    Ukraine
    rodger
    Есть там всё.
     
  11. rodger

    rodger New Member

    Blog Posts:
    0
    Joined:
    Nov 10, 2007
    Messages:
    363
    Пардон, теперь нашел. Просто нетипичный вариант расположения линков на исходники.