圖像旋轉90度(CImage類實現)(不同的位深度)

//讀取原始圖片信息

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); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章