Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.740 pregleda

Najnovija ↓

Prebacivanje bitmape u niz 22.09.2007. u 08:31 · pre 232 meseca #1
Koji je najbrzi nacin za prebacivanje vrednosti pixela iz jedne vrste neke slike u niz?
Probao sam
Code:
procedure TForm1.Button1Click(Sender: TObject);
Var i,Row : Integer;
    a : Array of Integer;
begin
   Row:=0;
   SetLength(a,Image1.Width);
   For i:=0 To Image1.Width-1 do a[i]:=Image1.Canvas.Pixels[i,Row];
end;

ali je prilicno sporo.
Re: Prebacivanje bitmape u niz 22.09.2007. u 11:56 · pre 232 meseca #3

> Koji je najbrzi nacin za prebacivanje vrednosti pixela iz jedne vrste neke slike u niz?

Kako ti trebaju pikseli koji nisu u kontinualnom nizu, moraš uzimati jedan po jedan. Pixels tj. GetPixel nije brzo rešenje jer koristi WinApi funkciju. Najbolje što možeš uraditi je da dođeš do direktne bmp memorije i da uzimaš piksele. Za direktan pristup memoriji možeš koristiti TJclBitmap32 a možda može i TGraphic32.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Prebacivanje bitmape u niz 22.09.2007. u 15:12 · pre 232 meseca #4
@savkic
Probacu nesto sa tvojim predlogom.

Ajde da kazem sta sve radim, mozda moze nesto bolje da se uradi. Radim nesto sa velikim bitmapama (recimo 20000x25000), koje se u delovima nalaze na hard disku. To su skenirane geografske karte na kojima nesto crtam i na kraju od svega treba da napravim jednu bitmapu na hard disku. Posto su velike, ne mogu da stanu u jednu bitmapu u memoriji, nego svaki deo nezavisno obradjujem i na na kraju sve to snimim u jedan bmp fajl. Kreiram header, a zatim na odgovarajuca mesta upisujem delove ovih bitmapa iz memorije. E sad, da bi ih upisao, treba da konverujem BGR pixele iz memorije u ARGB format i da snimim na hard disk. To radim tako sto pixele ubacim u niz, uz konverziju BGR->ARGB, pa sa BlockWrite snimim u fajl. Koliko sam mogao da primetim, u celoj operaciji snimanja na hard disk, najsporije je prebacivanje pixela u niz, jer se ne dobije znacajno ubrzanje ako povecam dimenziju niza koji upisujem.
Re: Prebacivanje bitmape u niz 22.09.2007. u 18:44 · pre 232 meseca #6
Možda da uopšte i ne koristiš komponentu već direktno sa fajlom, učitaš preko memory mapped file i menjaš, brže od toga ne može.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: Prebacivanje bitmape u niz 22.09.2007. u 19:01 · pre 232 meseca #7
Citat:
Milan Milosevic: Tu imas dosta dobrih resenja na internetu. Samo potrazi i nacices znacajna ubrzanja. Ja sam nesto skinuo sa
www.About.com
Radeno je u assembleru i algoritam je veoma brz.

Gledao sam ovo, ali nisam nasao nesto slicno mom problemu.

Citat:
savkic: Možda da uopšte i ne koristiš komponentu već direktno sa fajlom, učitaš preko memory mapped file i menjaš, brže od toga ne može.

Ali to bi znacilo da menjam fajlove originalne karte? Onda bih morao stalno da pravim kopiju, pa da radim sa njom.
Re: Prebacivanje bitmape u niz 22.09.2007. u 22:49 · pre 232 meseca #10
> Ali to bi znacilo da menjam fajlove originalne karte? Onda bih morao stalno da pravim kopiju, pa da radim sa njom.

Kažeš da ih menjaš pa snimaš? Ti ih prvo snimi pa menjaj :)
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme