rad sa slikama u delphiju

1

rad sa slikama u delphiju

offline
  • Pridružio: 19 Nov 2005
  • Poruke: 11
  • Gde živiš: Novi Sad

može li neko da mi objasni kako delphi u sebi čuva uvezene slike. da budem precizniji, hteo bih sliku koju sam već uvezao u delphi i koja je tamo valjda objekat tipa TImage, nekako da sačuvam, a da pri pozivanju ne koristim eksterni .jpg fajl. konkretnije, hteo bih da je snimim u datoteku tipa .dat definišući datoteku kao file of Timage. ovako nešto sam pokušao i on je zaista u datoteci zapamtio taj Timage, ali s obzirom da je datoteka mala, očigledno je da slika nije tu već možda samo neki okvir za sliku ili šta ja znam već... osim toga video sam da image ima i svojstvo picture pa mi sad i nije najjasnije šta, zapravo, predstavlja sliku, tj zapamćene piksele.
bio bih zahvalan ako bi mi neko ovo objasnio i samim tim razjasnio kako bih sliku mogao sačuvati u datoteci tipa .dat, kao što čuvam i objekte tipa string, integer i sl.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Srđan Tot
  • Am I evil? I am man, yes I am.
  • Pridružio: 12 Jul 2005
  • Poruke: 2483
  • Gde živiš: Ljubljana

Slika se ustvari cuva u objektima cije klase nalsedjuju klasu TGraphic. Svaka klasa cuva podatke na sebi svojstven nacin i poseduje funkcije koje omogucavaju iscrtavanje tih slika cime se omogucava prebacivanje njihovog sadrzaja na TCanvas ili neku drugu slicnu klasu.

AFAIK jedino TBitmap klasa prikazuje sta tacno sadrzi u sebi preko ScanLine i PixelFormat property-a. Takodje... bilo koja kontrola koja u sebi sadrzi Canvas property moze da, preko Pixels property TCanvas objekta, da podatke o svom izgledu.

Ti podatke mozes da snimis kako zelis... npr, ako su ti slike sastavljene samo od pravougaonika raznih boja, mozes sacuvati velicinu slike, broj pravougaonika, i njuhove koordinate i boje, i na osnovu toga da rekonstruises sliku.



offline
  • Pridružio: 19 Nov 2005
  • Poruke: 11
  • Gde živiš: Novi Sad

vidiš, srki, ja sam već uvezao neke slike koje stalno treba da se pojavljuju u aplikaciji koju pravim. slike su uvezene kao .jpg, a vidim da su u kodu one deklarisane kao tip TImage. e sad bih ja hteo da omogućim korisniku da uvozi slike koje će biti sačuvane u .dat fileu budući da tu čuvam i ostale podatke (podaci tipa string, integer i sl.). dakle, trebalo bi da iskoristim svojstvo TBitmap budući da hoću da sačuvam sve piksele (to sledi iz tvog odgovora). e sad, kako to konkretno da uradim? korisnik će isto tako da loaduje sliku iz nekog .jpg fajla, ali ja sad treba da omogućim da ona bude sačuvana u .dat fajlu. i treba da je definišem kao neki tip. koji?
slika bi takođe trebalo da bude pozvana pri narednom otvaranju aplikacije tako što će ona biti učitana iz tog .dat fajla, tj. trebalo bi da se pojavi u aplikaciji posle određene akcije. bilo bi tu više slika (koje bi učitavao korisnik) i sve bi one bile zapamćene u tom .dat fajlu. dakle, pitanje je:
kako da loadovanu sliku zapamtim u tom .dat fajlu? slika već postoji na korisničkom računaru i ona je u .jpg formatu. dakle, u tom .dat fajlu treba da budu zapamćeni svi pikseli slike.

offline
  • Đuro Glumac
  • dipl. ing. informatike
  • Pridružio: 08 Feb 2004
  • Poruke: 3640
  • Gde živiš: ApAtIn

Pa mozes u bazi podataka da napravis jednu kolonu tipa Image gde ce se cuvati slike, tako ce ti sve slike biti npr u jednom .dat fajlu a po potrebi prikazaivanja izvlacis je iz baze. Jesi razmisljao da to odradis tako?

offline
  • Pridružio: 19 Nov 2005
  • Poruke: 11
  • Gde živiš: Novi Sad

mislim da nije loša ideja, NullCoDe, jer možda mi baš nešto takvo i treba budući da imam tablice baze gde će biti još neki podaci (brojčani) tako da bih dodao još jednu kolonu gde bi bile slike koje bi unosio korisnik i koje bi, takođe, naknadno mogao pozivati. e sad, napravio sam bazu u accesu i, vidim, sliku je moguće uneti (kao i bilo koji drugi fajl), jedino što na dvoklik on poziva dotični program da je otvori što meni možda i neće trebati jer bih ja u formi uveo jedan okvir gde bi slika trebalo da se pojavljuje. e sad, videću da li će biti problema.
btw. moje databaze imaju ekstenziju mdb

offline
  • Đuro Glumac
  • dipl. ing. informatike
  • Pridružio: 08 Feb 2004
  • Poruke: 3640
  • Gde živiš: ApAtIn

Ja sam radio nesto slicno sa postavljanjem slika u bazu, ali je baza pila Paradox i sasvim lepo je radilo. Nisam probavao sa Access bazom ali ne bi trebaloi da bude problema.

offline
  • Pridružio: 19 Nov 2005
  • Poruke: 11
  • Gde živiš: Novi Sad

očito ništa ne može bez problema. uredno sam u accesu napravio tabelu u kojoj je jedna kolona sadržavala polja tipa BLOB gde se mogao smestiti OLE object. u polje te kolone sam učitao postojeću sliku koja je imala ekstenziju .jpeg. zatim sam u delphiju uveo kontrole za povezivanje databaze i jedan objekat tipa TDBImage u kojem bi trebalo da se prikazuje slika iz databaze. preko svojstava DataSet, DataSource i ConnectionString sam taj objekat povezao sa databazom. za DataField sam odabrao naslov kolone u tabeli koja je bila predviđena za smeštanje slika. međutim, dobio sam poruku 'Bitmap image is not valid'. isto se desilo i kad sam u accesu umesto .jpeg uneo sliku ekstenzije .bmp. zaista, na koji način u polje tipa BLOB uneti sliku da bi mogla iz databaze da se prikaže u okviru TDBimage?

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

TDBImage moze samo da prikaze BMP te je ne treba koristiti.
Pravilan nacin za prikazivanje slika je stavljanje TImage kontrole koja moze da prikaze JPG.. pri svakom pomeranju tabele dok je u browse modu, ucitas sliku u Stream, i onda je assign-ujes u TImage.picture.

Elem, i to je sporo. Jedini dobar nacin za to je da "obavestis"korisnika da ima slike, onda on stisne dugmence za sliku, i ti je lepo ucitas i prikazes u drugoj formi, kao pop-up. U suprtonom, jako usporava shetanje kroz tabelu/upit.


Pokazalo se u praksi da DataAware kontrole su dobre samo za bazicu tipa telefonski imenik... za sve ozbiljnije moras da napravis klase koje ce da ubacuju i vade podatke iz baze. Narocito ako pravis 3-tier sisteme.

offline
  • Pridružio: 19 Nov 2005
  • Poruke: 11
  • Gde živiš: Novi Sad

ma zadovoljio bih se ja i sa bmp, ali, kako rekoh, neće ni to da prihvati tako da mi uopšte nije jasno šta prihvata

Dopuna: 30 Apr 2006 5:08

ohrabruje činjenica da je NullCoDe to elegentno rešio. sad me baš živo zanima šta će on na ovo da kaže.

Dopuna: 30 Apr 2006 5:11

ali u svakom slučaju, beli, dao si jednu mogućnost o kojoj valja razmišljati

offline
  • Emil Beli
  • Pridružio: 03 Jan 2005
  • Poruke: 2990
  • Gde živiš: Beograd

@Artlover
Nemas sta da razmisljas. Tako se radi u praksi.
Drugi problem koji imas je Access baza. Access ima ne standardan sistem za storage, ne standardan SQL, sve zivo izvrnuto. Ako pravis nesto malo, potrazi na netu AbsoluteDB personal. On je free a bazica je super, mislim , skroz super.

Ako pak hoces nesto ozbiljno, skini PostgreSQL server, koji je takodje free.

Ko je trenutno na forumu
 

Ukupno su 1642 korisnika na forumu :: 51 registrovanih, 8 sakrivenih i 1583 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 8u47, A.R.Chafee.Jr., aramis s, babaroga, bobomicek, Bobrock1, bufanje, cenejac111, cinoeye, DejanSt, Dimitrise93, djboj, Djokkinen, DonRumataEstorski, Duh sa sekirom, Dukelander, dzoni19, GandorCC, gomago, goxin, hooraay, Ilija Cvorovic, Karla, kikisp, Kubovac, kunktator, kybonacci, ljuba, mercedesamg, Mercury, Mi lao shu, MikeHammer, mikrimaus, milenko crazy north, milutin134, Mixelotti, Nemanja.M, ObelixSRB, oganj123, procesor, rasok, repac, Srle993, suton, theNedjeljko, vathra, Viceroy, VJ, Vladko, wolverined4, Wrangler