Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > bmp to txt


Автор: welt 12.6.2009, 17:33
Нужно сохранить bmp файл в массив значений. Каждый пиксел записать числом, соответствующим его яркости.
Но это нужно сделать на winApi.
без апи я пока что сделал так:

Код

var
  bPicture:TPicture; 
  brg:double;
  P : PByteArray;
  Ft:text;
 
.......................
 
 AssignFile(FT,'data.txt');
 ReWrite(Ft);
 
 for j:=0 to bPicture.Bitmap.Height-1 do begin
  for i:=0 to bPicture.Bitmap.Width-1 do
   begin
    P := bPicture.BitMap.ScanLine[J];
    brg:=0.3*GetRValue(P[i])+0.59*GetGValue(P[i])+0.11*GetBValue(P[i]);
    Write(Ft,brg:3:3,' ');
   end;
    Writeln(Ft);
   end;
  CloseFile(ft);


А вот как сичтать в файл на api...Может надо как-то через функцию CreateBitmap...

Автор: Alexeis 12.6.2009, 18:03
Посмотрите тут http://forum.vingrad.ru/forum/topic-104913/view-all/hl/loadimage/index.html

Автор: Romikgy 12.6.2009, 19:52
а чем не устраивает вариант тот что есть он и в винде работать будет 

Автор: welt 13.6.2009, 15:38
Alexeis, 
Спасибо, нашел в той теме как вывести через пикселы на форму и получилось записать в файл. 
Но я пишу на winapi и хочу на контент окна вывести картинку, но почему-то не выводится. 
Делаю так:

Код

var
  Image1 : HWND;
//.......................

Image1 := CreateWindow('Static' ,'  ' ,WS_CHILD or SS_BITMAP or WS_VISIBLE,
104, 8, 281, 313, Handle, 0, hInst, nil);
SendMessage(Image1, WM_SETFONT, hFont, 0);
Bmp := LoadBitmap(hInstance, MAKEINTRESOURCE('Image1.bmp'));
SendMessage(Image1, STM_SETIMAGE, IMAGE_BITMAP, Bmp);


Romikgy, 
Надо на апи))

Автор: Alexeis 13.6.2009, 15:50
Цитата(welt @  13.6.2009,  14:38 Найти цитируемый пост)
Но я пишу на winapi и хочу на контент окна вывести картинку

  bitblt рисует. Скопировать с контекста битмапа, на контекст канвы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)