[ cassey @ 19.04.2006. 16:22 ] @
Evo macujem se ceo da i nikako da provalim. Dakle, imam sliku (.gif .jpg sve jedno) rezolucije n x m. Zelim da procitam svaki pixel sa nje i od toga napravim matricu gde ce polje a [i,j] = x, tako da je pixel sa kordinatama i,j boje x.
A drugo pitanje kako to da napravim obrnuto (od matrice da napravim sliku)?

[ Srki_82 @ 19.04.2006. 17:59 ] @
Da li si pogledao Pixels property TBitmap klase? Mislim da bi ti oni sasvim lepo posluzili svrsi jer rade bas to sto ti treba.
[ cassey @ 19.04.2006. 19:14 ] @
Da sve je to lepo ali ja nista ne znam o tome. Aj ako mozes pogledaj to potrebno mi je hotno. Sutra putujem u Madjarsku na neko takm pa su neki zadaci ovog tipa (kada ja to ocuitam onda ide ono sto ja znam ali mi je ovo problem)...
[ ntojzan @ 20.04.2006. 19:14 ] @
Pa zapravo Pixels radi dosta sporo.

Ono sto bih ja preporucio jeste nesto ovako:

Code:

type
  TPixelArray = Array of Array of Integer;

procedure ImageToPixelArray(Image: TImage; PixelArray: TPixelArray);
var
  Bitmap: TBitmap;
  ScanLine: PIntegerArray;
  X, Y: Integer;
begin
  Bitmap := TBitmap.Create;
  Bitmap.Assign(Image.Picture.Graphic);
  Bitmap.PixelFormat := pf32bit;
  SetLength(PixelArray, 0);
  SetLength(PixelArray, Bitmap.Height, Bitmap.Width);
  for Y := 0 to Bitmap.Height - 1 do
  begin
    ScanLine := Bitmap.ScanLine[Y];
    for X := 0 to Bitmap.Width - 1 do
      PixelArray[Y, X] := ScanLine[X];
  end;
  Bitmap.Free;
end;

procedure PixelArrayToImage(Image: TImage; PixelArray: TPixelArray);
var
  Bitmap: TBitmap;
  ScanLine: PIntegerArray;
  X, Y: Integer;
begin
  Bitmap := TBitmap.Create;
  Bitmap.PixelFormat := pf32bit;
  Bitmap.Height := Length(PixelArray);
  Bitmap.Width := Length(PixelArray[0]);
  for Y := 0 to Bitmap.Height - 1 do
  begin
    ScanLine := Bitmap.ScanLine[Y];
    for X := 0 to Bitmap.Width - 1 do
      ScanLine[X] := PixelArray[Y, X];
  end;
  Image.Picture.Assign(Bitmap);
  Bitmap.Free;
end;


[Ovu poruku je menjao ntojzan dana 20.04.2006. u 20:17 GMT+1]