刚好我做了一个定时拷贝屏幕的程序。给你看看,数据库存JPG没有任何问题,应该有用。
procedure TForm1.Timer1Timer(Sender: TObject);
var
Fullscreen:Tbitmap;
FullscreenCanvas:TCanvas;
dc:HDC;
My_image: timage;
jp : tjpegimage;
jp_stream : TMemoryStream;
begin
if adodataset1.Active=false then adodataset1.Open;
timer1.Enabled := false;
jp_Stream := TMemoryStream.Create; {建立流}
Jp:=tjpegimage.Create;
Fullscreen := TBitmap.Create; //创建一个BITMAP来存放图象
Fullscreen.Width := screen.width;
Fullscreen.Height := screen.Height;
DC := GetDC (0); //取得屏幕的 DC,参数0指的是屏幕
FullscreenCanvas := TCanvas.Create; //创建一个CANVAS对象
FullscreenCanvas.Handle := DC;
Fullscreen.Canvas.CopyRect
(Rect (0, 0, screen.Width, screen.Height), fullscreenCanvas,
Rect (0, 0, Screen.Width, Screen.Height));
//把整个屏幕复制到BITMAP中
FullscreenCanvas.Free; //释放CANVAS对象
ReleaseDC (0, DC); //释放DC
jp.CompressionQuality:=50;
jp.Assign(FullScreen);
fullscreen.free; //释放bitmap
// jp.SaveToFile('c:/temp.jpg');
jp.SaveToStream(jp_stream);
jp.Free;
adodataset1.Append;
adodataset1.FieldByName('Cap_Time').AsDateTime:=now;
TBlobField(adodataset1.FieldByName('pic')).LoadFromStream(jp_stream);
adodataset1.Edit;
adodataset1.Post;
jp_stream.Free;
timer1.Enabled :=true;
end;
读取图像反过来就行了,有问题再联系。