Poslao: 05 Maj 2006 23:23
|
offline
- artlover
- Novi MyCity građanin
- Pridružio: 19 Nov 2005
- Poruke: 11
- Gde živiš: Novi Sad
|
nešto sam uradio, ali nisam mislio da će biti baš toliko komplikacija. polazi mi za rukom da čitam blob polja preko funkcije koja kreira blobstream iz polja databaze. kod za ovu funkciju sam našao na internetu i definicija funkcije izgleda ovako:
function JpegStartsInBlob
(PicField:TBlobField):integer;
var
bS : TADOBlobStream;
buffer : Word;
hx : string;
begin
Result := -1;
bS := TADOBlobStream.Create(PicField, bmRead);
try
while (Result = -1) and
(bS.Position + 1 < bS.Size) do
begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'FF' then begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = 'D8' then Result := bS.Position - 2
else if hx = 'FF' then
bS.Position := bS.Position-1;
end; //if
end; //while
finally
bS.Free
end; //try
end;
odgovarajuću akciju koja koristi gore navedenu proceduru i prikazuje sliku sam malo prepravio i kao takva mi radi, tj. učitava sliku u komponentu Timage koju sam nazvao imgPrikaz. za one koji imaju sličnih problema, navešću kod i za tu proceduru:
var
bS : TADOBlobStream;
Pic : TJpegImage;
adotBazaPonudaSkica: TblobField;
begin
adotBazaPonudaSkica := TBlobField(dbgrdBazaPonuda.DataSource.DataSet.FieldByName('Skica'));
bS := TADOBlobStream.Create
(adotBazaPonudaSkica, bmRead);
try
bS.Seek(JpegStartsInBlob(adotBazaPonudaSkica),
soFromBeginning);
Pic:=TJpegImage.Create;
try
Pic.LoadFromStream(bS);
imgPrikaz.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
bS.Free
end;
sve ovo fino radi čak i na event AfterScroll mada sam mislio da će sve ipak biti mnogo jednostavnije.
što se tiče accesove baze, uverio sam se da mi mnogo brljavi, ali kako sam je već uveo na mnogim mestima, zasada bih se zadržao na njoj. ubuduće, naravno, treba gledati neka druga rešenja.
zahvaljujem se svima koji su se javili iako nisam siguran da neću naići još na neki problem vezan za rad sa slikama.
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 06 Maj 2006 00:33
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Malo kompleksan nacin da citas blob... sta mislis o ovome?
query.sql.text:='select BLOB_POLJE from TABELA where USLOV';
query.open;
ms:=TMemoryStream.create;
try
TBlobField(query.fields[0]).SaveToStream(ms);
query.close;
ms.position:=0;
// sad ti je blob u memory streamu i mozes da mu radis sta hoces,
finally
ms.free;
end;
|
|
|
|
Poslao: 06 Maj 2006 14:00
|
offline
- artlover
- Novi MyCity građanin
- Pridružio: 19 Nov 2005
- Poruke: 11
- Gde živiš: Novi Sad
|
lepo izgleda. evo upravo to pokušavam, međutim uporno mi izbacuje JPEG error #53!
doduše, pošto meni slika treba da se prikaže kad je polje već selektovano od strane korisnika, zašto ne bi moglo i
TBlobField(ADTable1.fields[BrojKoloneUKojojJeSlika]).SaveToStream(ms); ?
|
|
|
|
Poslao: 06 Maj 2006 14:36
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Problem je sto slika nije zapisana kako valja. Sledeci put je zapishi sam.. slicna procedura
update TABELA set BLOB_POLJE = :param where USLOV
TBlobField(query.params[0]).LoadFromStream(ms,ftBlob);
naravno, predhodno si stavio JPG u stream
|
|
|
|
Poslao: 25 Jul 2006 19:24
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
Inace slici moze da se pristupa kao binarnoj datoteci pa posle odkrijes sta ti je sta u zaglavlju to imas i na onoj vikipediji ili tako slicnim stranicama
malo je komplikovano ja sam radio nesto jednostavno uzimao sam svaki bajt po bajt i to prikazivao u memo kontroli mislim da se nesto slicno moze i iskoristiti da pristupas slici bajt po bajt
HH
|
|
|
|
Poslao: 25 Jul 2006 19:47
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Nema potrebe za tim. imaju komponente, osim TImage koje prepoznaju sve formate. Samo stavis LoadFromStream.
|
|
|
|
Poslao: 26 Jul 2006 09:08
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
Eto imalo nemalo potrebe mogao bi svaki fajl da otvaras tako bez neke potrebe da imas toliko komponenate
Tempring
HH
|
|
|
|
Poslao: 26 Jul 2006 14:18
|
offline
- beli0135

- Executor
- Pridružio: 03 Jan 2005
- Poruke: 2990
- Gde živiš: Beograd
|
Pitanje je da li zelis sam sebi da dokazes da si dobar programer ili ti treba da odradis posao na najlaksi i najbrzi nacin.
Seti se: TIME = MONEY
|
|
|
|
Poslao: 28 Jul 2006 09:24
|
offline
- Pridružio: 11 Jun 2006
- Poruke: 94
|
Sve je to relativno.....
U svakom slucaju dobro je i to znati ja nisam znao ali sam naucio....
Ko zna mozda mi nekada bas ta stvari i zatreba....
HH
|
|
|
|