Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Считывание BMP изображения и перевод в массив [D7, WinXP]


Brandik ©   (2006-09-24 00:59:00) 

Извинити за то что избито уже, наверное.

Стоит задача
1. Считать изображение BMP(размер NxM) из файла и преобразовать в массив NxM с значениями типа 0FA2DD.

Можете дать код или ссылочку на литературу

Подскажите, пожалуйста, какую книгу лучше приобрести  по Дельфи 7 чтобы максимально была раскрыта тема работы с изображениями.


Ketmar   (2006-09-24 14:44:00) [1]

>[3] Brandik(c) 24-Sep-2006, 13:13
фигня с ошибками. кто тебе сказал, что битмап -- всегда именно 32bpp?


Brandik   (2006-09-24 13:13:00) [2]

Я тут поковырял форум и нашел вот такой путь. Это нормальное решение?

procedure TForm1.Button1Click(Sender: TObject);
type
 TRGB = record
  b, g, r: byte;
end;
ARGB = array[0..100,0..100] of TRGB;

var

// JpegIm:   TJpegImage;

BmpImage: TBitMap;
x,y : Integer;
  P : PByteArray;

B: ARGB;

begin
// if OpenDialog1.Execute = true then
BmpImage:= TBitmap.Create;
BmpImage.LoadFromFile(edit1.text+'.bmp');
  try
   // On Windows replace MyBitmap.png with a full pathname such as
   // C:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp
   for y := 0 to BmpImage.Height -1 do
   begin
     P := BmpImage.ScanLine[y];

     for x := 0 to {BmpImage.Width -}1 do
//        P[x] := y;
 Begin
        b[y,x].b :=p[x*3];
        b[y,x].g :=p[x*3+1];
        b[y,x].r :=p[x*3+2];
 End;
   end;
   Canvas.Draw(100,100,BmpImage);
 edit4.text:=inttostr(B[strtoint(edit2.Text),strtoint(edit3.Text)].r);
 edit5.text:=inttostr(B[strtoint(edit2.Text),strtoint(edit3.Text)].g);
 edit6.text:=inttostr(B[strtoint(edit2.Text),strtoint(edit3.Text)].b);
 finally
   BmpImage.Free;

  end;


MBo   (2006-09-24 11:45:00) [3]

TBitmap.LoadFromFile
в массив - GetDiBits


Virgo_Style   (2006-09-24 08:36:00) [4]

Ну, начать можно с TBitmap (или вообще TImage) и Pixels. Затем, по мере возникновения вопроса "А почему так медленно?" модернизировать его. До неузнаваемости %-)
Точнее до ScanLine или чтения из файла.


Наверх

Титульная страница Поиск, карта сайта Написать письмо