我正在尝试编写这个用 C 语言操作 bmp 图像的程序,到目前为止我已经设法将其旋转如下:
for (row=0; row < rows; row++)
for (col=0; col < cols; col++)
{
(*new) + rows*col + (rows - row -1) = original + row*cols + col;
}
其中:Original = 原始 bmp,new = 新的 bmp,其大小取决于我要应用的旋转量。两者都是指向bmp的指针,new是指向指针的指针。 我已经做了好几次数学计算,当它实际上应该顺时针旋转时,它却逆时针旋转。这是一个问题,但我想我可以逆时针翻转它足够的时间,让它看起来顺时针旋转。我的问题是:我将如何从原始 bmp 图像进行多次旋转并使其最终出现在我正在创建的新 bmp 图像上。 也就是说,我怎样才能执行多次上述操作,并且仍然只有 1 个输入和 1 个大小正确的输出文件。 我想用指针来完成此操作,因为它将使我更容易操作其他过程中的输出。 我希望这是足够的细节。
谢谢。
最佳答案
使用矩阵。伪代码:
class Matrix {
double m11,m12,m21,m22;
};
dest.x = matrix.m11*src.x + matrix.m12*src.y;
dest.y = matrix.m21*src.x + matrix.m22*src.y;
其中x = x - image.width/2 且 y = y - image.height/2
http://en.wikipedia.org/wiki/Rotation_matrix#Common_rotations
关于c - 如何在C中以90度的增量旋转bmp图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19481733/