//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include <jpeg.hpp>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
struct
{
int r;
int g;
int b;
int temp;
int tempr;
int tempg;
int tempb;
}
rgbp[1920][1200];
BYTE *ptr;
int pic_num=0, All_pic_num=0;
AnsiString name[1500];
int Open_File=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
if(OpenPictureDialog1->Execute())
{
pic_num=0;
All_pic_num=OpenPictureDialog1->Files->Count;
for(int i=0;i<All_pic_num;i++)
name[i]=OpenPictureDialog1->Files->Strings[i];
if(OpenPictureDialog1->FilterIndex==1)
{
Image1->Picture->LoadFromFile(name[pic_num]);
Open_File=1;
}
else
if(OpenPictureDialog1->FilterIndex==2)
{
TJPEGImage *jp=new TJPEGImage();
jp->LoadFromFile(name[pic_num]);
Image1->Picture->Bitmap->Assign(jp);
Open_File=2;
delete jp;
}
StatusBar1->Panels->Items[1]->Text=IntToStr(pic_num+1);
StatusBar1->Panels->Items[5]->Text=IntToStr(All_pic_num);
StatusBar1->Panels->Items[9]->Text=name[pic_num];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton2Click(TObject *Sender)
{
int x,y;
x=Image1->Width;
y=Image1->Height;
Image1->Picture->Bitmap->PixelFormat=pf24bit;
for (int j=0;j<y;j++)
{
ptr=(BYTE*)Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
rgbp[i][j].r=ptr[3*i+2];
rgbp[i][j].g=ptr[3*i+1];
rgbp[i][j].b=ptr[3*i];
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton3Click(TObject *Sender)
{
if(SavePictureDialog1->Execute())
Image1->Picture->Bitmap->SaveToFile(SavePictureDialog1->FileName);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton4Click(TObject *Sender)
{
int x,y;
x=Image1->Width;
y=Image1->Height;
Image1->Picture->Bitmap->PixelFormat=pf24bit;
for (int j=0;j<y;j++)
{
ptr=(BYTE*)Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
ptr[3*i+2]=rgbp[i][j].r;
ptr[3*i+1]=rgbp[i][j].g;
ptr[3*i]=rgbp[i][j].b;
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton5Click(TObject *Sender)
{
int x=Image1->Width;
int y=Image1->Height;
for(int j=0;j<y;j++)
{
ptr=(BYTE *) Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
ptr[3*i+2]=255- ptr[3*i+2];
ptr[3*i+1]=255- ptr[3*i+1];
ptr[3*i]= 255- ptr[3*i];
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton6Click(TObject *Sender)
{
if (pic_num>0)
{
pic_num--;
if(Open_File==1)
Image1->Picture->LoadFromFile( name[pic_num]);
else
if(Open_File==2)
{
TJPEGImage *jp = new TJPEGImage();
jp-> LoadFromFile(name[pic_num]);
Image1->Picture->Bitmap-> Assign(jp);
delete jp;
}
StatusBar1->Panels->Items[1]->Text=IntToStr( pic_num+1);
StatusBar1->Panels->Items[5]->Text=IntToStr( All_pic_num);
StatusBar1->Panels->Items[9]->Text=name[pic_num];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton7Click(TObject *Sender)
{
if (pic_num<All_pic_num-1)
{
pic_num++;
if(Open_File==1)
Image1->Picture->LoadFromFile( name[pic_num]);
else
if(Open_File==2)
{
TJPEGImage *jp = new TJPEGImage();
jp-> LoadFromFile(name[pic_num]);
Image1->Picture->Bitmap-> Assign(jp);
delete jp;
}
StatusBar1->Panels->Items[1]->Text=IntToStr( pic_num+1);
StatusBar1->Panels->Items[5]->Text=IntToStr( All_pic_num);
StatusBar1->Panels->Items[9]->Text=name[pic_num];
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton8Click(TObject *Sender)
{
int x= Image1->Width ;
int y= Image1->Height ;
for(int j=0;j<y;j++)
{
ptr =(BYTE *) Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
ptr[3*i+2]=( ptr[3*i+2]+ptr[3*i+1]+ptr[3*i]) /3;
ptr[3*i+1]= ptr[3*i+2];
ptr[3*i] = ptr[3*i+2];
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton9Click(TObject *Sender)
{
int x= Image1->Width ;
int y= Image1->Height ;
for(int j=0;j<y;j++)
{
ptr =(BYTE *) Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
ptr[3*i+2]=( 0.299*ptr[3*i+2]+0.587*ptr[3*i+1]+0.114*ptr[3*i]) /3;
ptr[3*i+1]= ptr[3*i+2];
ptr[3*i] = ptr[3*i+2];
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton10Click(TObject *Sender)
{
int x= Image1->Width ;
int y= Image1->Height ;
for(int j=0;j<y;j++)
{
ptr =(BYTE *) Image1->Picture->Bitmap->ScanLine[j];
for(int i=0;i<x;i++)
{
ptr[3*i+2]=( 9798*ptr[3*i+2]+9238*ptr[3*i+1]+3728*ptr[3*i]) /32768;
ptr[3*i+1]= ptr[3*i+2];
ptr[3*i] = ptr[3*i+2];
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton11Click(TObject *Sender)
{
SpeedButton15Click(Sender) ;
int x,y;
x=Image1->Width;
y=Image1->Height;
Image1->Picture->Bitmap->PixelFormat=pf24bit;
for (int j=1;j<y-1;j++)
{
ptr=(BYTE*)Image1->Picture->Bitmap->ScanLine[j];
for(int i=1;i<x-1;i++)
{
ptr[3*i+2]=( rgbp[i-1][j-1].tempr + rgbp[i][j-1].tempr+ rgbp[i+1][j-1].tempr +
rgbp[i-1][j].tempr + rgbp[i][j].tempr + rgbp[i+1][j].tempr +
rgbp[i-1][j+1].tempr + rgbp[i][j+1].tempr+ rgbp[i+1][j+1].tempr)/9;
ptr[3*i+1]=( rgbp[i-1][j-1].tempg + rgbp[i][j-1].tempg+ rgbp[i+1][j-1].tempg +
rgbp[i-1][j].tempg + rgbp[i][j].tempg+ rgbp[i+1][j].tempg +
rgbp[i-1][j+1].tempg + rgbp[i][j+1].tempg+ rgbp[i+1][j+1].tempg)/9;
ptr[3*i]=( rgbp[i-1][j-1].tempb + rgbp[i][j-1].tempb+ rgbp[i+1][j-1].tempb +
rgbp[i-1][j].tempb + rgbp[i][j].tempb+ rgbp[i+1][j].tempb +
rgbp[i-1][j+1].tempb + rgbp[i][j+1].tempb+ rgbp[i+1][j+1].tempb)/9;
}
}
Canvas->Draw(0,0, Image1->Picture->Bitmap);
Image1->Repaint();
}
//--------------------------------------------