无2D阵列的水平图像翻转C++

无2D阵列的水平图像翻转C++,c++,arrays,image,C++,Arrays,Image,我想知道是否有任何方法可以在不使用2d阵列的情况下水平翻转图像。类似于此: for (int x = 0; x < width/2; x++) { for (int y = 0; y < height; y++) { int temp = pixelData[x][y]; pixelData[x][y]=pixelData[width-x][y]

我想知道是否有任何方法可以在不使用2d阵列的情况下水平翻转图像。类似于此:

     for (int x = 0; x < width/2; x++) {
                for (int y = 0; y < height; y++) {
                   int temp = pixelData[x][y]; 
                   pixelData[x][y]=pixelData[width-x][y] 
                   pixelData[width-x][y]=temp;
                }
        }

您可以使用单个指针指向图像

您需要知道从一条光栅线扫描线的末端到下一条光栅线之间的距离增量。因此,当增量超过光栅线的端点后,将距离添加到指针,使其位于下一光栅线的最左侧列


使用具有智能GPU的现代系统,您可以通过将图像复制到2d阵列、转换图像,然后将其放回,从而提高效率。更智能的GPU可能具有镜像功能以及位闪烁

图像是一个二维数组。。。你到底想做什么?你可以做pixelData[width*x+y]。你提出的算法对我来说似乎没问题,你需要用width-1-x替换width-x,你到底不喜欢什么?如果您尝试描述您的输入和期望的输出,可能会有所帮助。请编辑您的问题。您可以从以下答案中获取想法:。它处理3个子像素,红色,绿色和蓝色,但它做你想要的。