【发布时间】:2014-02-04 11:14:42
【问题描述】:
我编写了下一个函数来将一个无符号字符像素数组旋转 90 度,该数组包含一个 RGB 图像。我面临的问题是旋转后的输出完全是乱码。
void rotate90(unsigned char *buffer, const unsigned int width, const unsigned int height)
{
const unsigned int sizeBuffer = width * height * 3;
unsigned char *tempBuffer = new unsigned char[sizeBuffer];
for (int y = 0, destinationColumn = height - 1; y < height; ++y, --destinationColumn)
{
int offset = y * width;
for (int x = 0; x < width; x++)
{
tempBuffer[(x * height) + destinationColumn] = buffer[offset + x];
}
}
// Copy rotated pixels
memcpy(buffer, tempBuffer, sizeBuffer);
delete[] tempBuffer;
}
【问题讨论】:
-
您是否尝试过使用小型阵列并手动计算出步骤?这将是调试此类问题的最佳方法。无论如何,由于您不知道是代码有问题还是实际逻辑有问题,所以这是一个很好的起点。
-
好像一个像素用了3个字节。只体现在
sizeBuffer的分配上,其他地方没有。