资源简介
基于MFC显示tiff图像,内有代码说明
代码片段和文件信息
#include “StdAfx.h“
#include “Image1.h“
CImage1::CImage1(void)//在构造函数中,对数据成员初始化;
{
nWidth=0;
nHeight=0;
nBitCount=0;
nBytesPerLine=0;
nBytesPerPixel=0;
nNumColors=0;
nSize=0;
hMemDC=NULL;
}
CImage1::~CImage1(void)
{
}
void CImage1::CreateDIB(int Dxint Dyint BitsDWORD dwFlags)//位图的宽度,高度,每个像素的位数,默认参数;
{
BITMAPINFOHEADER BIH={400010000000};//为位图信息头赋初值
LPBITMAPINFO lpBmi;//位图信息指针,指向位图信息结构,该结构包括位图信息头和颜色表;
nWidth=Dx;
nHeight=Dy;
nBitCount=Bits;
nBytesPerLine=(nWidth*nBitCount+31)/32*4;//使每一行的字节数为4的倍数,每个像素3个字节
nBytesPerPixel=nBitCount/8;
if (nBitCount>8)
{
nNumColors=0;
}
else
{
nNumColors=1< }
nSize=nBytesPerLine*nHeight;
BIH.biWidth=nWidth;
BIH.biHeight=nHeight;
BIH.biBitCount=nBitCount; //重新设置位图信息头的部分参数
lpBmi=(LPBITMAPINFO)malloc(40+sizeof(RGBQUAD)*nNumColors);
memcpy(lpBmi&BIH40+sizeof(RGBQUAD)*nNumColors);
hBitmap=CreateDIBSection(NULLlpBmiDIB_RGB_COLORS(void**)&lpBitsNULL0);//创建一个可以直接写入的DIB
free(lpBmi); //CreateDIBSection函数第一个参数为NULL时,系统将为DIB分配内存返回一个代表DIB的位图句柄(hBitmap)
}
bool CImage1::IsNull()
{
if (hBitmap==NULL)
{
return true;
}
else
{
return false;
}
}
HDC CImage1::GetDC()
{
hMemDC=CreateCompatibleDC(NULL);
Selectobject(hMemDChBitmap);//把代表DIB位图的句柄,放入DC
return hMemDC;
}
void CImage1::ReleaseDC()
{
if (hMemDC)
{
Deleteobject(hMemDC);
DeleteDC(hMemDC);
}
}
int CImage1::GetWidth()
{
return nWidth;
}
int CImage1::GetHeight()
{
return nHeight;
}
bool CImage1::LoadTIF(const char* pszFileName)
{
bool bFlag;
//char drive[_MAX_DRIVE];
//char dir[_MAX_DIR];
//char fname[_MAX_FNAME];
//char ext[_MAX_EXT];
//_splitpath(pszFileNamedrivedirfnameext);
DWORD ColorMap;
FILE *fp;
TIF_IFH head;
TIF_DE dir[25];//要确保DE个数小于25
WORD tif_pal[768];
WORD kmntnnc1c2DxDyBits;
WORD TifBytesPerLineOffBitsImageTypeCompression;
byte VgaPal[768]BmpPal[1024]*buf*p;
int ijflag=0;
fp=fopen(pszFileName“rb“);
if (fp==NULL)
{
return(false);
}
fread(&head24fp);
fseek(fphead.FirstIFDSEEK_SET);
fread(&nn21fp);
fread(dir12nnfp);
for (i=0;i {
switch(dir[i].Tag)
{
case IMAGEWIDTH :
Dx=(WORD) dir[i].ValOff;
break;
case IMAGELENGTH :
Dy=(WORD) dir[i].ValOff;
break;
case BITSPERSAMPLE :
if (dir[i].Length>2) Bits=24;
else Bits=(WORD) dir[i].ValOff;
break;
case COMPRESSION :
Compression=(WORD) dir[i].ValOff;
break;
case PHOTOMETRICINTERP :
ImageType=(WORD) dir[i].ValOff;
break;
case STRIPOFFSETS :
if (dir[i].Length==1)
OffBits=(WORD) dir[i].ValOff;
else {
fseek(fpdir[i].ValOffSEEK_SET);
fread(&OffBits41fp);
}
break;
case COLORMAP :
ColorMap=dir[i].ValOff;
n=(WORD) dir[i].Length;
fseek(fpColorMapSEEK_SET);
fread(tif_pal2nfp);
p=(BYTE *) VgaPal;
n/=3;
for (m=0;m
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 238592 2013-01-24 12:42 ShowTiff\Debug\ShowTiff.exe
文件 1815724 2013-01-24 12:42 ShowTiff\Debug\ShowTiff.ilk
文件 6065152 2013-01-24 12:42 ShowTiff\Debug\ShowTiff.pdb
文件 14030 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\cl.command.1.tlog
文件 228514 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\CL.read.1.tlog
文件 11988 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\CL.write.1.tlog
文件 19055 2013-01-07 10:27 ShowTiff\ShowTiff\Debug\Image1.obj
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 2 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 7268 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 19282 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 5246 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\li
文件 89621 2013-01-07 10:27 ShowTiff\ShowTiff\Debug\MainFrm.obj
文件 2324 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\mt.command.1.tlog
文件 2180 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\mt.read.1.tlog
文件 610 2013-01-24 12:42 ShowTiff\ShowTiff\Debug\mt.write.1.tlog
文件 3476 2013-01-07 10:27 ShowTiff\ShowTiff\Debug\rc.command.1.tlog
文件 12848 2013-01-07 10:27 ShowTiff\ShowTiff\Debug\rc.read.1.tlog
............此处省略56个文件信息
评论
共有 条评论