uses
  Classes, SysUtils, Clipbrd, Graphics,PNGImage, JPEG;
type
  TClipboardImageFormat = (cfBMP, cfPNG, cfJPEG);

procedure SaveClipboardImageToFile(const FileName: string; 
  Format: TClipboardImageFormat = cfBMP; 
  JPEGQuality: Integer = 90);
function ClipboardHasImage: Boolean;

implementation

uses
  PNGImage, JPEG;

function ClipboardHasImage: Boolean;
begin
  Result := Clipboard.HasFormat(CF_BITMAP) or 
            Clipboard.HasFormat(CF_PICTURE) or
            Clipboard.HasFormat(CF_METAFILEPICT);
end;

procedure SaveClipboardImageToFile(const FileName: string; 
  Format: TClipboardImageFormat; 
  JPEGQuality: Integer);
var
  Bitmap: TBitmap;
  PNG: TPNGImage;
  JPEG: TJPEGImage;
begin
  if not ClipboardHasImage then
    raise Exception.Create('剪贴板中没有图片');
    
  Bitmap := TBitmap.Create;
  try
    Bitmap.Assign(Clipboard);
    
    case Format of
      cfPNG:
        begin
          PNG := TPNGImage.Create;
          try
            PNG.Assign(Bitmap);
            PNG.SaveToFile(FileName);
          finally
            PNG.Free;
          end;
        end;
      cfJPEG:
        begin
          JPEG := TJPEGImage.Create;
          try
            JPEG.Assign(Bitmap);
            JPEG.CompressionQuality := JPEGQuality;
            JPEG.SaveToFile(FileName);
          finally
            JPEG.Free;
          end;
        end;
    else // cfBMP
      Bitmap.SaveToFile(FileName);
    end;
  finally
    Bitmap.Free;
  end;
end;
procedure TMainForm.EditPaste(Sender: TObject);
var
  ClipboardText, BMPdir: string;
begin
  ClipboardText := Clipboard.AsText;
  if ClipboardHasImage then   begin
//     BMPdir:=                         // 保存为BMP
    BMPdir:=  ExtractFilePath(ParamStr(0))  +   'image.bmp'   ;

    SaveClipboardImageToFile(BMPdir,cfBMP, 95);
     if FileExists(BMPdir) then
      RichEx.InsertBitmap(editor.Handle,BMPdir)
  end else begin
    editor.SelText:=  ClipboardText;
  end;
end;

 

 // 保存为BMP
SaveClipboardImageToFile('C:\image.bmp',cfBMP, 95);

// 保存为PNG
//SaveClipboardImageToFile('C:\image.png', cfPNG, 95);
//
//// 保存为JPEG(设置质量)
//SaveClipboardImageToFile('C:\image.jpg', cfJPEG, 95);

 

image