我想问一个文件是否可以从上到下写入? 下面的当前代码将垂直翻转和成像。 这使用从左到右的方式写入文件。
另一方面,如果我按照从左到右的模式写入文件,我会遇到如何水平翻转图像的问题。 注意:我这里还有其他选择,即从上到下交换行。
谁知道也许有一种方法可以遵循垂直翻转模式。
如果你们能提供任何帮助,我将不胜感激。谢谢。
//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/