-
大小: 23.21MB文件類型: .rar金幣: 1下載: 0 次發(fā)布日期: 2023-08-06
- 語言: C/C++
- 標(biāo)簽:
資源簡介
基于MFC顯示tiff圖像,內(nèi)有代碼說明
代碼片段和文件信息
#include?“StdAfx.h“
#include?“Image1.h“
CImage1::CImage1(void)//在構(gòu)造函數(shù)中,對數(shù)據(jù)成員初始化;
{
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)//位圖的寬度,高度,每個(gè)像素的位數(shù),默認(rèn)參數(shù);
{
BITMAPINFOHEADER?BIH={400010000000};//為位圖信息頭賦初值
LPBITMAPINFO?lpBmi;//位圖信息指針,指向位圖信息結(jié)構(gòu),該結(jié)構(gòu)包括位圖信息頭和顏色表;
nWidth=Dx;
nHeight=Dy;
nBitCount=Bits;
nBytesPerLine=(nWidth*nBitCount+31)/32*4;//使每一行的字節(jié)數(shù)為4的倍數(shù),每個(gè)像素3個(gè)字節(jié)
nBytesPerPixel=nBitCount/8;
if?(nBitCount>8)
{
nNumColors=0;
}
else
{
nNumColors=1< }
nSize=nBytesPerLine*nHeight;
BIH.biWidth=nWidth;
BIH.biHeight=nHeight;
BIH.biBitCount=nBitCount;?//重新設(shè)置位圖信息頭的部分參數(shù)
lpBmi=(LPBITMAPINFO)malloc(40+sizeof(RGBQUAD)*nNumColors);
memcpy(lpBmi&BIH40+sizeof(RGBQUAD)*nNumColors);
hBitmap=CreateDIBSection(NULLlpBmiDIB_RGB_COLORS(void**)&lpBitsNULL0);//創(chuàng)建一個(gè)可以直接寫入的DIB
free(lpBmi);????//CreateDIBSection函數(shù)第一個(gè)參數(shù)為NULL時(shí),系統(tǒng)將為DIB分配內(nèi)存返回一個(gè)代表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個(gè)數(shù)小于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
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件?????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個(gè)文件信息
評論
共有 條評論