c - 如何在C中从上到下写入文件

标签 c image-processing flip

我想问一个文件是否可以从上到下写入? 下面的当前代码将垂直翻转和成像。 这使用从左到右的方式写入文件。

另一方面,如果我按照从左到右的模式写入文件,我会遇到如何水平翻转图像的问题。 注意:我这里还有其他选择,即从上到下交换行。

谁知道也许有一种方法可以遵循垂直翻转模式。

如果你们能提供任何帮助,我将不胜感激。谢谢。

 //Flip Vertically
for(y = WIDTH-1 ; y >= 0 ; y--) {
    for(x = 0 ; x < HEIGHT; x++) {

        p = (unsigned char *)datap + ((WIDTH) * y * 3) + (x * 3); 
        // output pixel
        if(fwrite(p, sizeof(char), 3, outfp) != 3) {
            cleanUpBeforeExit(infp, outfp, datap, E_FILE_WRITE_ERROR);
        }
    }
}

最佳答案

请注意,您使用的术语非常含糊。垂直翻转、水平翻转可以有两种理解,就像文件时从上到下一样。

因此我会给出一个笼统的答案。

假设您按照通常的扫描顺序写入像素,先顶行,先左像素,即通过在双循环中寻址 Image[Column + Row * Pitch] (外部位于 ,位于内部)。您还可以反转循环遍历顺序。

然后通过写Image[(Width - 1 - Column) + Row * Pitch]就可以得到左右镜像(像素水平移动),以及上下镜像(像素水平移动)垂直)与 Image[Column + (Height - 1 - Row) * Pitch]

您可以结合这两种修改来实现 180° 旋转。

关于c - 如何在C中从上到下写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50944013/

相关文章:

c WEXITSTATUS() 以 255 退出

c - 地址转换示例

c - 操作系统 : Why is GetProcessInformation() causing a segfault?

c++ - MAT channel 的平均值

android - 检查图像是否为黑色

html - 使用 CSS 实现纸张翻转过渡

c - 使用动态内存分配删除重复项后打印命令行参数会出现段错误

ios - 如何使用 MPS (MetalPerformanceShaders) 制作 Flatten 滤镜?

ios - 从中间动画UIImageView翻转

CSS3 效果不起作用