C++ Builder 2007 利用第三方控件 对 TIFF 等图片格式的转换

在此先感谢 CxImage  的作者,为我们提供如此优秀的开源图像处理库。

下载 CxImage 控件,网址如下,可根据自己品台选择,这里选择 BCB6 的版本
下载地址:http://www.xdp.it/download.htm 

编译内部所有 Project ,TIFF 编译会出一个小错误 TLib 空间不足,对项目选项修改之,使之大于等于建议值,这里设 Page size 为 32,重新编译通过,虽然有N多警告,没法了。

最终生成8个Lib文件。

创建新的测试项目,导入所有Lib,include ximage.h 文件

----------------------------------------------------------------------------

// 载入文件
String fext = ExtractFileExt(PictureFilename).LowerCase();
 // 初始化验证值,变量来自 ximage.h
 int format = CXIMAGE_FORMAT_UNKNOWN;
 // 对扩展名进行判断
 if ( fext == ".tif" || fext == "tiff" )
 {
  format = CXIMAGE_FORMAT_TIF;
 }
 else if ( fext == ".jpg" || fext == ".jpeg" )
 {
  format = CXIMAGE_FORMAT_JPG;
 }
 else if ( fext == ".bmp" )
 {
   format = CXIMAGE_FORMAT_BMP;
 }
 else if ( fext == ".png" )
 {
  format = CXIMAGE_FORMAT_PNG;
 }
 /*
 else if ( fext == ".ico" )
 {
  format = CXIMAGE_FORMAT_ICO;
 }
 else if ( fext == ".tga" )
 {
  format = CXIMAGE_FORMAT_TGA;
 }
 else if (fext == "wmf" || fext == "emf" )
 {
  format = CXIMAGE_FORMAT_WMF;
 }
 else if (fext == "j2k" || fext == "jp2" )
 {
  format = CXIMAGE_FORMAT_J2K;
 }
 else if ( fext == ".gif")
 {
  format = CXIMAGE_FORMAT_GIF;
 }
 else if ( fext == "pcx" )
 {
  format = CXIMAGE_FORMAT_PCX;
 }
 */
 else
 {
  return CXIMAGE_FORMAT_UNKNOWN;
 }

 // Invalidate(); // 调用Invalidate(),会触发WMPaint消息进行重画。

 if ( FileExists(PictureFilename) == false || format == CXIMAGE_FORMAT_UNKNOWN )
 {
  // 文件没有找到
  return CXIMAGE_FORMAT_UNKNOWN;
 }

// 创建 CxImage 对象
 CxImage* cxImage = new CxImage;
// CxImage 对象读取文件
try
{
 cxImage->Load(PictureFilename.c_str(), format);
}
catch (...)
{
 delete cxImage;
 return;
}

// 创建 BitMap 对象接收 CxImage 数据
 if ( cxImage->IsValid() == true )
 {
  bmpGraphic = new Graphics::TBitmap;
  bmpGraphic->Width = cxImage->GetWidth();
  bmpGraphic->Height = cxImage->GetHeight();

// 设置Bitmap尺寸
  TRect DrowRect(0, 0, cxImage->GetWidth(), cxImage->GetHeight());
// Drop Bitmap
  cxImage->Draw2(bmpGraphic->Canvas->Handle, DrowRect);
 }

 delete cxImage;

// cxImage->Save() 方法可将其保存为其他格式文件
// CxImage 还有很多方法,如果你愿意,可以作一个具备一定功能的画图软件
// Bitmap 对象成功获取后也可以很方便的进行处理,例如向 Form Drow 图等

你可能感兴趣的:(C++,String,delete,include,图像处理,tiff)