原来的代码是这样的:...
form1.videocap1.SaveToClipboard;
form1.Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
jpg.Assign(form1.Image1.Picture.Bitmap);
jpg.CompressionQuality := 10;
jpg.JPEGNeeded;
jpg.Compress;
jpg.SaveToStream(memStream);
...通过一个IMAGE控件,但我想直接从剪贴板里得到这个图片,怎么做?
form1.videocap1.SaveToClipboard;
form1.Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
jpg.Assign(form1.Image1.Picture.Bitmap);
jpg.CompressionQuality := 10;
jpg.JPEGNeeded;
jpg.Compress;
jpg.SaveToStream(memStream);
...通过一个IMAGE控件,但我想直接从剪贴板里得到这个图片,怎么做?
Var
Bmp:TbitMap;
Jpeg:TJPEGImage;
Begin
Bmp:=nil;
Jpeg:=nil;
If (Trim(BmpFile) = '') or (Trim(JpgFile) = '') then
Begin
Result:=-2;
Exit;
End;
Try
Begin
Bmp:=Tbitmap.create; //建立bitmap类实例
Bmp.LoadFromFile(BmpFile); //读入Bmp文件
End;
Except
Begin
If Bmp<>nil then
Bmp.Free; //释放Bitmap类
Result:=-1;
Exit;
End;
End;
Try
Begin
Jpeg:=TjpegImage.Create; //建立TjpegImage类实例
Jpeg.Assign(Bmp); //复制图像数据
Jpeg.compressionQuality:=Quality; //设置压缩率
Jpeg.SaveToFile(JpgFile); //图像压缩后存盘
End;
Except
Begin
If Bmp<>nil then
Bmp.Free;
If Jpeg<>nil then
Jpeg.Free; //释放TjpegImage类
Result:=-3;
Exit;
End;
End;
Bmp.Free;
Jpeg.Free;
Result:=0;
End;
但 Bitmap.Assign(ClipBoard); 能执行,是因为格式的问题么。
var
jpg:TJPEGImage;
bmp:TBitmap;
begin
bmp:=TBitmap.Create;
try
bmp.Assign(Clipboard);
jpg:=TJPEGImage.Create;
try
jpg.Assign(bmp);
jpg.CompressionQuality := 10;
jpg.Compress;
jpg.SaveToFile('test.jpg');
finally
jpg.Free;
end;
finally
bmp.Free;
end;end;
begin
if Source is TJPEGImage then
begin
FImage.Release;
FImage := TJPEGImage(Source).FImage;
FImage.Reference;
if TJPEGImage(Source).FBitmap <> nil then
begin
NewBitmap;
FBitmap.Assign(TJPEGImage(Source).FBitmap);
end;
end
else if Source is TBitmap then
begin
NewImage;
NewBitmap;
FBitmap.Assign(Source);
end
else
inherited Assign(Source);
end;