圧縮されていない 24 ビットの .bmp ファイル
90 の倍数の回転を指定して .bmp ファイルを回転する必要があります。たとえば、画像があり、+90 または -90 の回転係数が指定されています。私の画像は、回転係数に従って左または右に 90 度回転します。ファイルのサイズが等しい場合、つまり高さと幅が等しい場合、私のプログラムは正常に動作しますが、正方形ではない画像で実行すると、セグメント エラーが発生します。
これは私がこれまでに持っているコードです。
if(rotation == 90 || rotation == -270 )
{
/* 90 = -270 */
for(row = 0; row < rows; row++)
{
for(col = 0; col < cols; col++ )
{
PIXEL* o = original+ (row*cols) + col;
PIXEL* n = (*new)+((cols-col-1)*cols) + row;
*n = *o;
}
}
*newcols = cols;
*newrows = rows;
このメソッドのヘッダーは次のとおりです。
int rotate(PIXEL* original, int rows, int cols, int rotation,
PIXEL** new, int* newrows, int* newcols)
ここで、PIXEL* original には元の .bmp ファイルが含まれます
行と列は、.bmp ファイルを読み取るメソッドの呼び出しによって取得されます
回転 = ユーザーが指定した回転係数です