c - 如何在C中从上到下写入文件
问题描述
我想问是否可以从上到下写入文件?下面的当前代码将垂直翻转和成像。这使用从左到右写入文件。
另一方面,如果我在写入文件时遵循从左到右的模式,我将如何水平翻转图像时遇到问题。 注意:我在这里还有其他选择,即从上到下交换行。
谁知道也许有一种方法可以遵循垂直翻转模式。
我将不胜感激你们可以提供的任何帮助。谢谢。
//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]
双循环寻址(外在上Row
,内在上Column
)。您还可以反转循环遍历顺序。
然后,您将通过写入获得左右镜像(像素水平移动)Image[(Width - 1 - Column) + Row * Pitch]
,并通过写入获得上下镜像(像素垂直移动)Image[Column + (Height - 1 - Row) * Pitch]
。
您可以结合这两种修改来实现 180° 旋转。
推荐阅读
- appium - Appium 6.1.0 TouchAction 与 TouchAction
- python - 用于在python中检索文本范围的正则表达式
- c# - 添加到委托的附加信息
- pandas - 识别差异的最佳方法:欧几里得距离、余弦距离还是简单减法?
- apache-nifi - 如何在 getMongo 处理器中参数化 URI
- android - 两台安卓设备离线连接
- css - 菱形网格图像的 MAC OS 问题
- ruby-on-rails - Debug / Execute Discourse plugin from command line
- docker - Docker - ulimit differences between container and host
- python - Remove repeated header lines from a txt file but keep the first header row