📄 unit1.pas
字号:
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 + -