⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 图象处理的一些相关内容 不是很难的,实现简单,希望对大家有帮助
💻 PAS
📖 第 1 页 / 共 2 页
字号:
    7:Spooky(Image1.Picture.Bitmap,ProgressBar1);


  end; //end case
  ProgressBar1.Visible:=false;
  form1.IsImageChanged:=true;
  self.Image1.Repaint;
  self.Repaint;
end;
procedure TForm1.MenuFileOpenClick(Sender: TObject);
begin
{
  if OpenDialog1.Execute then
  begin
    if  ( (LowerCase(ExtractFileExt(OpenDialog1.FileName))='.bmp')
    or (LowerCase(ExtractFileExt(OpenDialog1.FileName))='.jpg')
    or (LowerCase(ExtractFileExt(OpenDialog1.FileName))='.jpeg') ) then
    begin
      LoadImage(OpenDialog1.FileName);
      FileName:=OpenDialog1.FileName;
    end;


  end;    }
end;

procedure TForm1.MenuEditCancelClick(Sender: TObject);
begin
  LoadImage(FileName);
  //Image1.Picture.Bitmap.Assign(FOldBmp);
  IsImageChanged:=false;
//
end;

procedure TForm1.MenuContrastChange(Sender: TObject);
begin
  if not (Sender is TMenuItem) then exit;
  if Image1.Picture.Bitmap.Height=0 then exit;

  ProgressBar1.Visible:=true;
  ContrastChange(Image1.Picture.Bitmap,TMenuItem(sender).tag,ProgressBar1);
  ProgressBar1.Visible:=false;

  IsImageChanged:=true;
  self.Image1.Repaint;
  self.Repaint;

//
end;

procedure TForm1.N19Click(Sender: TObject);
begin
  if Image1.Picture.Bitmap.Height=0 then exit;
  form2.LoadImage(Image1.Picture.Bitmap);


  form2.GroupBoxRGBChange.Visible:=false;
  form2.GroupBoxBrightnessChange.Visible:=false;

  form2.GroupBoxSaturationChange.Visible:=true;
  form2.Caption:='饱和度调整';
  form2.ShowModal;


{

 Saturation(Image1.Picture.Bitmap,300); // Amount: 0~510
 self.Image1.Repaint;
  self.Repaint;
 }
end;

procedure TForm1.MenuSaveClick(Sender: TObject);
var
  Jpeg:TJpegImage;
  //image:TImage;
begin
  if Not (FileExists(FileName)) then
  begin
    showmessage('文件:'+FileName+'不存在!');
    exit;
  end;


  if (LowerCase(ExtractFileExt(FileName))='.bmp') then
    Image1.Picture.SaveToFile(FileName)
  else if (LowerCase(ExtractFileExt(FileName))='.jpg')
  or (LowerCase(ExtractFileExt(FileName))='.jpeg')  then
  begin

    Jpeg:=TjpegImage.Create;
    try
      Jpeg.Assign(Image1.Picture.Bitmap);
      Jpeg.CompressionQuality:=50;
      Jpeg.Compress;
      Jpeg.SaveToFile(FileName);
    finally
      Jpeg.Free;
    end;
  end;



end;

procedure TForm1.MenuSaveAsClick(Sender: TObject);
var
  Jpeg:TJpegImage;

begin
  SaveDialog1.FileName:=FileName;
  if SaveDialog1.Execute then
  begin
    //bmp 文件
    if SaveDialog1.FilterIndex=1 then
    begin
      if (LowerCase(ExtractFileExt(SaveDialog1.FileName))='.bmp') then
      begin
        if FileExists(SaveDialog1.FileName) then
          if MessageDlg('文件:'+SaveDialog1.FileName+'已经存在,是否覆盖?',mtInformation,[mbYes,MbNo],0)=mrYes then
            Image1.Picture.SaveToFile(SaveDialog1.FileName)
          else
            exit
        else
          Image1.Picture.SaveToFile(SaveDialog1.FileName);
      end
      else
        if FileExists(SaveDialog1.FileName+'.bmp') then
          if MessageDlg('文件:'+SaveDialog1.FileName+'.bmp'+'已经存在,是否覆盖?',mtInformation,[mbYes,MbNo],0)=mrYes then
            Image1.Picture.SaveToFile(SaveDialog1.FileName+'.bmp')
          else
            exit
        else
          Image1.Picture.SaveToFile(SaveDialog1.FileName+'.bmp');
    end
      //SaveDialog1.
    //jpg文件
    else if SaveDialog1.FilterIndex=2 then
    begin

      try

        if (LowerCase(ExtractFileExt(SaveDialog1.FileName))='.jpg')
        or (LowerCase(ExtractFileExt(SaveDialog1.FileName))='.jpeg')  then

          if FileExists(SaveDialog1.FileName) then
            if MessageDlg('文件:'+SaveDialog1.FileName+'已经存在,是否覆盖?',mtInformation,[mbYes,MbNo],0)=mrYes then
            begin
              Jpeg:=TjpegImage.Create;
              Jpeg.Assign(Image1.Picture.Bitmap);
              Jpeg.CompressionQuality:=50;
              Jpeg.Compress;
              Jpeg.SaveToFile(SaveDialog1.FileName);
              Jpeg.Free;
              exit;
            end
            else
              exit
          else
          begin
              Jpeg:=TjpegImage.Create;
              Jpeg.Assign(Image1.Picture.Bitmap);
              Jpeg.CompressionQuality:=50;
              Jpeg.Compress;
              Jpeg.SaveToFile(SaveDialog1.FileName);
              Jpeg.Free;
              exit;
          end
        else
        begin
          if FileExists(SaveDialog1.FileName+'.jpg') then
            if MessageDlg('文件:'+SaveDialog1.FileName+'.jpg'+'已经存在,是否覆盖?',mtInformation,[mbYes,MbNo],0)=mrYes then
            begin
              Jpeg:=TjpegImage.Create;
              Jpeg.Assign(Image1.Picture.Bitmap);
              Jpeg.CompressionQuality:=50;
              Jpeg.Compress;
              Jpeg.SaveToFile(SaveDialog1.FileName+'.jpg');
              Jpeg.Free;
              exit;
            end
            else
              exit
          else
          begin
            Jpeg:=TjpegImage.Create;
            Jpeg.Assign(Image1.Picture.Bitmap);
            Jpeg.CompressionQuality:=50;
            Jpeg.Compress;
            Jpeg.SaveToFile(SaveDialog1.FileName+'.jpg');
            Jpeg.Free;
            exit
          end;
          if FileExists(SaveDialog1.FileName+'.jpeg') then
            if MessageDlg('文件:'+SaveDialog1.FileName+'.jpeg'+'已经存在,是否覆盖?',mtInformation,[mbYes,MbNo],0)=mrYes then
            begin
              Jpeg:=TjpegImage.Create;
              Jpeg.Assign(Image1.Picture.Bitmap);
              Jpeg.CompressionQuality:=50;
              Jpeg.Compress;
              Jpeg.SaveToFile(SaveDialog1.FileName+'.jpeg');
              Jpeg.Free;
              exit;
            end
            else
              exit
          else
          begin
              Jpeg:=TjpegImage.Create;
              Jpeg.Assign(Image1.Picture.Bitmap);
              Jpeg.CompressionQuality:=50;
              Jpeg.Compress;
              Jpeg.SaveToFile(SaveDialog1.FileName+'.jpeg');
              Jpeg.Free;
              exit
          end;

        end;
      finally
        //Jpeg.Free;
        //showmessage('finally');
      end;
    end;

  end;


end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  if IsImageChanged then
  begin
    if MessageDlg('文件:'+FileName+'已经被更改,是否保存?',mtInformation,[mbYes,MbNo],0)=mrYes then
    begin
      MenuSaveAsClick(nil);
      CanClose:=true;
      exit;
    end
    else
      CanClose:=true;

  end
  else
  CanClose:=true;


end;

procedure TForm1.N16Click(Sender: TObject);
var
  canclose:boolean;
begin
  if IsImageChanged then
  begin
    if MessageDlg('文件:'+FileName+'已经被更改,是否保存?',mtInformation,[mbYes,MbNo],0)=mrYes then
    begin
      MenuSaveAsClick(nil);
      application.Terminate;
    end
    else
      application.Terminate;

  end
  else
    application.Terminate;

end;

procedure TForm1.LoadPlugins;
var
  SearchRec: TSearchRec;
  path: string;
  Found: Integer;
  FilterName:string;
  FilterFunctionName:string;
  i:integer;
  MenuItem:TMenuItem;

begin
  path := ExtractFilePath(Application.Exename);
  i:=0;
  try
    Found := FindFirst(path + '*.dll', 0,SearchRec);
    while Found = 0 do
    begin
      FilterName:=copy(SearchRec.Name,1,pos('_',SearchRec.Name)-1);
      FilterFunctionName:=copy(SearchRec.Name,pos('_',SearchRec.Name)+1,pos('.',SearchRec.Name)-pos('_',SearchRec.Name)-1);
      if (FilterName<>'') and (FilterFunctionName<>'') then
      begin
        StringListPlugInDll.Add(SearchRec.Name);
        StringListFilterFunctionName.Add(trim(FilterFunctionName));

        //listbox2.Items.Add(FilterName);
        //listbox2.Items.Add(inttostr(length(trim(FilterFunctionName)))+FilterFunctionName);

        MenuItem:=TMenuItem.Create(self);
        MenuItem.Caption:=inttostr(i)+FilterName;
        MenuItem.Tag:=i;
        MenuItem.OnClick:=MenuItemPlugInClick;
        MenuItemFilterPlugIn.Insert(i,MenuItem);
        inc(i);
      end;


      Found := FindNext(SearchRec);
    end;
  finally
    FindClose(SearchRec);
  end;
end;

procedure TForm1.MenuItemPlugInClick(Sender: TObject);
var
  LibHandle: HMODULE;
  pFilterProc: TPlugInFilter;

begin

  try
    LibHandle := LoadLibrary(Pchar(StringListPlugInDll[TMenuItem(Sender).tag]));
    // showmessage(StringListPlugInDll[TMenuItem(Sender).tag]);
    if LibHandle <> 0 then
    begin
      //showmessage( StringListFilterFunctionName[TMenuItem(Sender).tag]);

      pFilterProc:= GetProcAddress(LibHandle,pchar(trim(StringListFilterFunctionName[TMenuItem(Sender).tag])));
     // pFilterProc:= GetProcAddress(LibHandle,'notcolor');

      if Assigned(pFilterProc) then
        pFilterProc( Image1.Picture.Bitmap)
      else
        ShowMessage('can not found'+StringListFilterFunctionName[TMenuItem(Sender).tag]);


    end
    else
      ShowMessage('loading Dll file error!');
  finally
    FreeLibrary(LibHandle);
  end;
  self.Image1.Repaint;
  self.Repaint;
  IsImageChanged:=true;
  //self.Repaint;
  //image1.Repaint;

end;


end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -