HaHa. ik heb het zelf al opgelost. hieronder de code:
Code:
procedure TForm1.GetData;
var
bS : TADOBlobStream;
Pic : TPNGObject;
begin
edGameName.Text := tblItem.FieldByName('name').AsString;
mmGameDescription.Text := tblItem.FieldByName('description').AsString;
if not tblItemicon.IsNull then begin
bS := TADOBlobStream.Create(tblItemicon, bmRead);
try
bS.Seek(PNGStartsInBlob(tblItemicon), soFromBeginning);
Pic:=TPNGObject.Create;
try
Pic.LoadFromStream(bS);
imgIcon.Picture.Graphic:=Pic;
finally
Pic.Free;
end;
finally
bS.Free
end;
end else begin
imgIcon.Picture.Graphic := nil;
end;
end;
function TForm1.PNGStartsInBlob (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 = '89' then begin
bS.ReadBuffer(buffer, 1);
hx:=IntToHex(buffer, 2);
if hx = '50' then Result := bS.Position - 2
else if hx = '89' then bS.Position := bS.Position-1;
end; //if
end; //while
finally
bS.Free
end; //try
end;
De code PNGStartsinblob zoek naar het begin van de png file (door middel van de hexcode 89 50) en van daaruit wordt de afbeelding pas ingeladen.
Bookmarks