//讀取原始圖片信息
CImage * srcImage = new CImage();
srcImage->Load(strPicName);
BYTE* srcPtr=(BYTE*)srcImage->GetBits();
int srcBitsCount=srcImage->GetBPP();
int srcWidth=srcImage->GetWidth();
int srcHeight=srcImage->GetHeight();
int srcPitch=srcImage->GetPitch();
//刪除原始圖片
DeleteFile(strPicName);
//創建新圖像
CImage * destImage = new CImage();
destImage->Create(1200,800,srcBitsCount,0);
//加載調色板
if(srcBitsCount<=8 && srcImage->IsIndexed())//需要調色板
{
RGBQUAD pal[256];
int nColors=srcImage->GetMaxColorTableEntries();
if(nColors>0)
{
srcImage->GetColorTable(0,nColors,pal);
destImage->SetColorTable(0,nColors,pal);//複製調色板程序
}
}
//目標圖像參數
BYTE *destPtr=(BYTE*)destImage->GetBits();
int destPitch=destImage->GetPitch();
//複製圖像數據
for(int i=0 ; i<1200;i++)
{
for(int j=0;j<800;j++)
{
if(srcBitsCount == 24)
{
*(destPtr+ (799-j)*destPitch + 3*i) = *(srcPtr + i*srcPitch +3*j);//目的圖片的第一列
*(destPtr+ (799-j)*destPitch + 3*i+1) = *(srcPtr + i*srcPitch +3*j+1);
*(destPtr+ (799-j)*destPitch + 3*i+2) = *(srcPtr + i*srcPitch +3*j+2);
}
else if(srcBitsCount == 8)
{
*(destPtr+ (799-j)*destPitch + i) = *(srcPtr + i*srcPitch +j);//目的圖片的第一列
}
} } //保存新圖像 destImage->Save(strPicName);