📄 unit1.~cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include <fstream>
#include <cerrno>
using namespace Colosseum ;
using namespace std ;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ProgressFunction (Colosseum::BitmapImageCoder &coder,
void *data,
unsigned int currentpass,
unsigned int passcount,
unsigned int progress,
bool &cancel)
{
/*unsigned int value = (100 * (currentpass - 1) + progress)
/ passcount ;
//MainForm->ProgressBar->Position = value ;
if (progress == 100 )
{
coder.updateImage () ;
image_type = Colosseum::JpegImage ;
PaintBox1->SetBounds (0, 0, image.getWidth (),
image.getHeight ()) ;
LoadBitmapInfoHeader () ;
PaintBox1->Refresh () ;
}
Application->ProcessMessages () ; */
return ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if(!OpenDialog1->Execute())return;
try
{
ReadImage(OpenDialog1->FileName) ;
}
catch (...)
{
throw ;
}
if (GetImageType () == Colosseum::UnknownImage)
{
throw Exception ("Unknown or Invalid Image Format") ;
}
}
//---------------------------------------------------------------------------
//---------------------------------------------------------------------
void __fastcall::TForm1::ReadImage (const String &filename)
{
image_type = Colosseum::UnknownImage ;
try
{
image_type = Colosseum::ReadImage2 (
filename.c_str (),
image) ;
}
catch (std::exception &ee)
{
throw Exception (ee.what ()) ;
}
LoadBitmapInfoHeader () ;
PaintBox1->SetBounds (150,50, image.getWidth (), image.getHeight ()) ;
return ;
}
//----------------------------------------------------------------------
void __fastcall::TForm1::LoadBitmapInfoHeader ()
{
image_header.bV4Size = sizeof (BITMAPV4HEADER) ;
image_header.bV4Width = image.getWidth () ;
image_header.bV4Height = -image.getHeight () ;
image_header.bV4Planes = 1 ;
image_header.bV4BitCount = 32 ;
image_header.bV4V4Compression = BI_BITFIELDS ;
image_header.bV4SizeImage = 0 ;
image_header.bV4XPelsPerMeter = 0 ;
image_header.bV4YPelsPerMeter = 0 ;
image_header.bV4ClrUsed = 0 ;
image_header.bV4ClrImportant = 0 ;
image_header.bV4BlueMask = 0xFFU ;
image_header.bV4GreenMask = 0xFF00U ;
image_header.bV4RedMask = 0xFF0000U ;
image_header.bV4AlphaMask = 0xFF000000U ;
return ;
}
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
if (image_type == Colosseum::UnknownImage)
return ;
SetDIBitsToDevice (PaintBox1->Canvas->Handle,
0,
0,
image.getWidth (),
image.getHeight (),
0,
0,
0,
image.getHeight (),
&image [0],
reinterpret_cast<BITMAPINFO *>(&image_header),
DIB_RGB_COLORS) ;
return ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (!SaveDialog1->Execute ())
return ;
String filename =SaveDialog1->FileName ;
String ext = ExtractFileExt(filename) ;
if (ext == "")
{
switch (SaveDialog1->FilterIndex)
{
case 1: filename += ".JPG" ; break ;
case 2: filename += ".BMP" ; break ;
}
}
Colosseum::BitmapImageEncoder *encoder ;
switch (SaveDialog1->FilterIndex)
{
case 1:
encoder = &jpeg_encoder ;
break ;
case 2:
encoder = &bmp_encoder ;
break ;
}
//encoder->setProgressFunction (ProgressFunction, NULL) ;
try
{
encoder->writeImageFile (filename.c_str (),GetImage ()) ;
}
catch (std::exception &ee)
{
throw Exception (ee.what ()) ;
}
return ;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
//
EditableBitmapImage myimage ;
AnsiString filename="d:\\ftp\\76029.jpg";
AnsiString filename2="d:\\ftp\\76029_save.bmp";
Colosseum::ReadImage2 (filename.c_str (),myimage) ;
//EditableBitmapImage myimage2;
//myimage2.setSize(myimage.getWidth()-4,myimage.getHeight()-4);
//myimage2.mergeImage(myimage,-4,-4);
Colosseum::BitmapImageEncoder *encoder ;
encoder->writeImageFile (filename2.c_str (),myimage) ;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -