//读取原始图片信息
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);