C語言之圖像旋轉


最近用到了圖像向左或者向右旋轉90°的情況,糾結了好一會兒,寫下來供大家參考。

1 向左旋轉90°

//unsigned char *pImgData: 輸入圖像指針
//int WidthIn, int HeightIn:輸入圖像寬、高
//unsigned char *pImgOut: 旋轉后圖像指針
void RotateOfLeft(unsigned char *pImgData, int WidthIn, int HeightIn)
{
    int i, j, tempSize;
    int WidthOut  = HeightIn;
    int HeightOut = WidthIn;
    unsigned char pImgtemp[148*36];            
    for (i = 0; i < HeightIn; i ++)
    {
        for (j = 0;j < WidthIn; j ++)      
        {
            *(pImgtemp + i*WidthIn + j) = *(pImgData*WidthIn + j);
        }      
    }  
    //memcpy(pImgtemp,pImgData,148*36);
    for (i = 0; i < HeightOut; i ++)
    {
        for (j = 0;j < WidthOut; j ++)      
        {
            *(pImgData + i*WidthOut + j) = *(pImgtemp + (j+1)*WidthIn - 1 - i);
        }          
    }
}

 

2 向右旋轉90°

//unsigned char *pImgData: 輸入圖像指針
//int WidthIn, int HeightIn:輸入圖像寬、高
//unsigned char *pImgOut: 旋轉后圖像指針
void RotateOfRight(unsigned char *pImgData, int WidthIn, int HeightIn, unsigned char *pImgOut)
{
    int i, j;
    int WidthOut  = HeightIn;
    int HeightOut = WidthIn;
    for (i = 0; i < HeightOut; i ++)
    {
        for (j = 0;j < WidthOut; j ++)      
        {
            *(pImgOut + i*WidthOut + j) = *(pImgData + (HeightIn - j - 1)*WidthIn + i);
        }          
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM