• 3 odgovora
  • 3.608 pregleda
Pomoc oko slike... HITNO 19.04.2006. u 16:22 · pre 249 meseci #1
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)?

Potpis
Math is like love. A simple idea but it can get complicated.
Re: Pomoc oko slike... HITNO 19.04.2006. u 17:59 · pre 249 meseci #2
Da li si pogledao Pixels property TBitmap klase? Mislim da bi ti oni sasvim lepo posluzili svrsi jer rade bas to sto ti treba.
Potpis
Play Store
Re: Pomoc oko slike... HITNO 19.04.2006. u 19:14 · pre 249 meseci #3
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)...
Potpis
Math is like love. A simple idea but it can get complicated.
Re: Pomoc oko slike... HITNO 20.04.2006. u 19:14 · pre 249 meseci #4
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]
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme