1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
uses jpeg,ExtCtrls,DB,Classes,Graphics,SysUtils;
.....
Procedure FichiertoBlob(blob:TBlobField;Image:TImage);
procedure BlobToImage(blob:TBlobField;Image:TImage);
implementation
const
pkBitmap = $42;
pkJPEG = $FF;
procedure FichiertoBlob;
var
s:string;
Stream:TMemoryStream;
b:byte;
Graphic:TGraphic;
bmp:TBitmap;
begin
with DataModule2 do
if OpenPictureDialog1.Execute then
begin
s:=OpenPictureDialog1.FileName;
if (FileExists(s)) then
begin
Stream:=TMemoryStream.Create;
try
Stream.LoadFromFile(s);
// Stream.Position:=0;
Stream.Read(b, 1);
if b in [pkBitmap,pkJPEG] then
begin
Stream.Position:=0;
Graphic := TJPEGImage.Create;
if b=pkBitmap then
begin
bmp := TBitmap.Create;
try
bmp.LoadFromStream(Stream);
Graphic.Assign(bmp);
Stream.Clear;
Graphic.SaveToStream(Stream);
finally
bmp.Free;
end;
end
else Graphic.LoadFromStream(Stream);
Stream.Position:=0;
blob.LoadFromStream(Stream);
Image.Picture.Graphic := Graphic;
Graphic.Free;
end;
finally
Stream.Free;
end;
end;
end;
end;
procedure BlobToImage;
var
ss:TMemoryStream;
Graphic:TGraphic;
b:byte;
begin
if not blob.IsNull then
begin
ss:=TMemoryStream.Create;
try
blob.SaveToStream(ss);
ss.Position:=0;
ss.Read(b, 1);
Graphic:=Nil;
case b of
pkBitmap: Graphic := TBitmap.Create;
pkJPEG: Graphic := TJPEGImage.Create;
end;
try
if Graphic <> nil then
begin
ss.Position:=0;
Graphic.LoadFromStream(ss);
end;
Image.Picture.Graphic:=Graphic;
finally
Graphic.Free;
end;
finally
ss.Free;
end;
end
else Image.Picture.Graphic:=nil;
end; |
Partager