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

📄 unit2.pas

📁 图象处理的一些相关内容 不是很难的,实现简单,希望对大家有帮助
💻 PAS
字号:
unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls, StdCtrls, ComCtrls,unit3 ;

type
  TForm2 = class(TForm)
    GroupBox1: TGroupBox;
    Panel1: TPanel;
    Panel2: TPanel;
    Label2: TLabel;
    Label3: TLabel;
    ImageBeforeChange: TImage;
    ImageAfterChange: TImage;
    GroupBoxRGBChange: TGroupBox;
    TrackBarRed: TTrackBar;
    GroupBoxBrightnessChange: TGroupBox;
    LabelRedValue: TLabel;
    TrackBarGreen: TTrackBar;
    TrackBarBlue: TTrackBar;
    LabelGreenValue: TLabel;
    LabelBlueValue: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label1: TLabel;
    ButtonOKRGBChange: TButton;
    ButtonCancel: TButton;
    TrackBarBrightnessChange: TTrackBar;
    ButtonOKBrightnessChange: TButton;
    Button3: TButton;
    Label6: TLabel;
    LabelBrightnessChange: TLabel;
    GroupBoxSaturationChange: TGroupBox;
    Label7: TLabel;
    Label8: TLabel;
    TrackBarSaturationChange: TTrackBar;
    ButtonOkSaturation: TButton;
    Button2: TButton;
    Label9: TLabel;
    procedure TrackBarRGBChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure ButtonOKRGBChangeClick(Sender: TObject);
    procedure ButtonCancelClick(Sender: TObject);
    procedure TrackBarBrightnessChangeChange(Sender: TObject);
    procedure ButtonOKBrightnessChangeClick(Sender: TObject);
    procedure TrackBarSaturationChangeChange(Sender: TObject);
    procedure ButtonOkSaturationClick(Sender: TObject);
  private
    { Private declarations }
  public
    procedure LoadImage(InputBmp:Tbitmap);
    { Public declarations }
  end;




var
  Form2: TForm2;






implementation

uses Unit1;

{$R *.DFM}

{ TForm2 }



procedure TForm2.LoadImage(InputBmp:Tbitmap);
var
  OriginalBmp:Tbitmap;
  PreBmp:Tbitmap;

begin
             
  if InputBmp.Height=0 then exit;
  if InputBmp.width=0 then exit;
  if not assigned(InputBmp) then exit;

  OriginalBmp:=Tbitmap.Create;
  OriginalBmp.Assign(InputBmp);

  PreBmp:=Tbitmap.Create;

  OriginalBmp.PixelFormat:=pf24bit;
  PreBmp.PixelFormat:=pf24bit;


  if (OriginalBmp.Width<=180) and (OriginalBmp.Height<=180) then
  begin
    ImageBeforeChange.Height:=OriginalBmp.Height;
    ImageBeforeChange.Width:=OriginalBmp.Width;

    ImageAfterChange.Height:=OriginalBmp.Height;
    ImageAfterChange.Width:=OriginalBmp.Width;

    ImageBeforeChange.Picture.Bitmap.Assign(OriginalBmp);
    ImageAfterChange.Picture.Bitmap.Assign(OriginalBmp);

  end;

  if OriginalBmp.Height>=OriginalBmp.Width then
  begin
    PreBmp.Height:=180;
    prebmp.Width:=prebmp.Height*OriginalBmp.Width div OriginalBmp.Height;
    PreBmp.Canvas.StretchDraw(Rect(0,0,PreBmp.Width,PreBmp.Height),OriginalBmp);

    ImageBeforeChange.Height:=PreBmp.Height;
    ImageBeforeChange.Width:=PreBmp.Width;

    ImageAfterChange.Height:=PreBmp.Height;
    ImageAfterChange.Width:=PreBmp.Width;

    ImageBeforeChange.Picture.Bitmap.Assign(PreBmp);
    ImageAfterChange.Picture.Bitmap.Assign(PreBmp);

  end;

  if OriginalBmp.Width>OriginalBmp.Height then
  begin
    PreBmp.Width:=180;
    prebmp.Height:=prebmp.Width*OriginalBmp.Height div OriginalBmp.Width;
    PreBmp.Canvas.StretchDraw(Rect(0,0,PreBmp.Width,PreBmp.Height),OriginalBmp);

    ImageBeforeChange.Height:=PreBmp.Height;
    ImageBeforeChange.Width:=PreBmp.Width;

    ImageAfterChange.Height:=PreBmp.Height;
    ImageAfterChange.Width:=PreBmp.Width;

    ImageBeforeChange.Picture.Bitmap.Assign(PreBmp);
    ImageAfterChange.Picture.Bitmap.Assign(PreBmp);

  end;

  ImageBeforeChange.Top:=(panel1.Height-ImageBeforeChange.Height) div 2;
  ImageBeforeChange.Left:=(panel1.Width-ImageBeforeChange.Width) div 2;

  ImageAfterChange.Top:=(panel2.Height-ImageAfterChange.Height) div 2;
  ImageAfterChange.Left:=(panel2.Width-ImageAfterChange.Width) div 2;


  OriginalBmp.Free;
  PreBmp.Free;

end;

procedure TForm2.TrackBarRGBChange(Sender: TObject);
var
  R,G,B:integer;
begin
  R := TrackBarRed.Position;
  G := TrackBarGreen.Position;
  B := TrackBarBlue.Position;
  if R <= 0 then  LabelRedValue.Caption := IntToStr(R)
  else LabelRedValue.Caption := Format('+%d', [R]);
  if G<= 0 then LabelGreenValue.Caption := IntToStr(G)
  else LabelGreenValue.Caption := Format('+%d', [G]);
  if B<= 0 then LabelBlueValue.Caption := IntToStr(B)
  else LabelBlueValue.Caption := Format('+%d', [B]);


  RGBChange(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,R,G,B);
  ImageAfterChange.Repaint;


//
end;

procedure TForm2.FormShow(Sender: TObject);
begin
  TrackBarRed.Position:=0;
  TrackBarGreen.Position:=0;
  TrackBarBlue.Position:=0;

  TrackBarBrightnessChange.Position:=0;
  TrackBarSaturationChange.Position:=255;


  //
end;

procedure TForm2.ButtonOKRGBChangeClick(Sender: TObject);
begin
  form1.ProgressBar1.Position:=0;

  form1.ProgressBar1.Visible:=true;
  RGBChange(form1.Image1.Picture.Bitmap,
                   TrackBarRed.Position,
                   TrackBarGreen.Position,
                   TrackBarBlue.Position,
                   form1.ProgressBar1
                   );

  form1.ProgressBar1.Visible:=false;

  self.Close;

  form1.IsImageChanged:=true;

  form1.Image1.Repaint;
  form1.Repaint;

end;

procedure TForm2.ButtonCancelClick(Sender: TObject);
begin
  close;
end;

procedure TForm2.TrackBarBrightnessChangeChange(Sender: TObject);
var
  ValueChange:integer;

begin
  ValueChange:=TrackBarBrightnessChange.Position;

  if   ValueChange<= 0 then LabelBrightnessChange.Caption := IntToStr(ValueChange)
  else LabelBrightnessChange.Caption := Format('+%d', [ValueChange]);

  BrightnessChange(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,ValueChange);
  ImageAfterChange.Repaint;
 // LabelBrightnessChange.Caption:
//
end;

procedure TForm2.ButtonOKBrightnessChangeClick(Sender: TObject);
begin

  form1.ProgressBar1.Position:=0;
  form1.ProgressBar1.Visible:=true;

  BrightnessChange(form1.Image1.Picture.Bitmap,
                   TrackBarBrightnessChange.Position,
                   form1.ProgressBar1);
  form1.ProgressBar1.Visible:=false;

  self.Close;
  form1.IsImageChanged:=true;
  form1.Image1.Repaint;
  form1.Repaint;
end;

procedure TForm2.TrackBarSaturationChangeChange(Sender: TObject);
begin
  label9.Caption:=inttostr(TrackBarSaturationChange.Position);
  Saturation(ImageBeforeChange.Picture.Bitmap,ImageAfterChange.Picture.Bitmap,TrackBarSaturationChange.Position);

  ImageAfterChange.Repaint;
 //
//
end;

procedure TForm2.ButtonOkSaturationClick(Sender: TObject);
begin
  form1.ProgressBar1.Position:=0;
  form1.ProgressBar1.Visible:=true;

  Saturation(form1.Image1.Picture.Bitmap,
                   TrackBarSaturationChange.Position,
                   form1.ProgressBar1);
  form1.ProgressBar1.Visible:=false;

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

//
end;

end.

⌨️ 快捷键说明

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