0

我正在尝试水平翻转灰度图像。指针 fp 指向原始图像,指针 fp1 正在创建水平翻转的图像。该程序正在正确执行,但输出图像最差......

    for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              idata[i][height - 1 -j] = ( (unsigned char)fgetc(fp));
    //flipping image          
for( i =0 ;i<width ; i++)
     for(j=0; j <height; j++)
              putc(idata[i][j] , fp1);                

图像的标题副本没有问题。我认为问题出在 for 循环中...请帮帮我

4

1 回答 1

3

你确定你没有混淆宽度和高度吗?代码似乎假设数据是按列顺序读取的,而它很可能是按行顺序读取的。尝试翻转 for 循环和翻转维度,如下所示:

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        idata[width - 1 - i][j] = ( (unsigned char)fgetc(fp));

//flipping image          

for(j = 0; j < height; j++)
    for(i = 0; i < width; i++)
        putc(idata[i][j] , fp1);
于 2012-10-08T19:35:37.083 回答