【发布时间】:2013-11-16 20:18:57
【问题描述】:
未压缩的 24 位 .bmp 文件
给定旋转倍数 90,我需要旋转 .bmp 文件。 例如,我有一张图像,我给定了 +90 或 -90 的旋转因子。 我的图像将根据旋转因子向左或向右旋转 90 度。 当文件的尺寸相等时,我的程序可以正常工作,这意味着高度和宽度相等,但是当我使用不是正方形的图像时,我会遇到 seg 错误。
这是我目前的代码。
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 文件的方法获得的
rotation = 是用户给定的旋转因子
【问题讨论】:
-
如果你的图片是矩形的,你需要截断它。你确定你这样做正确吗?
-
我不太确定@jucestain,这就是为什么我要求看看是否有人可以告诉我如何正确地做到这一点。因为它是正方形还是矩形 .bmp 无关紧要,它应该正确旋转它
-
当您将 2x3 矩形旋转 90(或 -90)度时,它变成了 3x2 矩形...
-
您应该使用调试器来找出程序段错误的确切位置。