最近用到了圖像向左或者向右旋轉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); } } }