Добрый вечер всем. Жутко меня интересует как превратить любой файл в бмп-шную картинку, мне сказали авторитеные люди что посредством апи функции bitbtn, но как не особо понятно, мол там в контектсе устройтва нужно как то прописать путь к исходному файлу. Внимательно выслушаю все правдоподобные мысли.
вероятно, имелось в виду - впаять данные в bmp. я о таком частенько слышал, но нарочно не вникал. у bmp структура очень примитивная, туда фиг что запрячешь, я бы лучше взял gif, ибо он является архивом PNGшек,
ШТО? ಠ_ಠ rodger Ты испытываешь необходимость в заполнении BITMAPFILEHEADER, BITMAPINFOHEADER. Код (Text): BITMAPFILEHEADER FileHeader; BITMAPINFOHEADER InfoHeader; memset(&FileHeader, 0, sizeof(FileHeader)); memset(&InfoHeader, 0, sizeof(InfoHeader)); FileHeader.bfType = 'MB'; // LE-BE FileHeader.bfOffBits = sizeof(FileHeader) + sizeof(InfoHeader) + 2; // +2 for dword align FileHeader.bfSize = FileHeader.bfOffBits + RgbSize; InfoHeader.biSize = sizeof(InfoHeader); InfoHeader.biWidth = SideSize; InfoHeader.biHeight = SideSize; InfoHeader.biPlanes = 1; InfoHeader.biBitCount = 32; InfoHeader.biCompression = BI_RGB; Соответственно, по смещению sizeof(FileHeader) + sizeof(InfoHeader) + 2 от начала конечного файла должен располагаться массив данных исходного файла. Лол, вот так выглядит блокнот:
Громадное тебе спасибо за исходник и за толковые коментарии, я эти методы долго искал. Спецификацию графических файлов давно скачал и некоторые исходники по стенографии, но были проблемы в работе моего приложения.
rodger Имей в виду, что в быстрокоде Sol'а не учитывается факт того, что каждый 4й байт не оказывает влияния на рисунок - составляющая 'alpha' не играет роли даже в 32х-битных bmp. Из-за этого конверсия такого bmp в, скажем, png, приведет к невозможности восстановления исходных данных. (Я-то сразу увидел, что приложенная картинка notepad.exe выглядит не как код х86). А высоту битмапу лучше ставить отрицательную (нагляднее).