gpt4 book ai didi

c - 如何调整位图大小

转载 作者:行者123 更新时间:2023-12-02 00:19:31 25 4
gpt4 key购买 nike

    // determine padding for scanlines
int padding = (4 - (bi.biWidth * sizeof(RGBTRIPLE)) % 4) % 4;

// iterate over infile's scanlines
for (int i = 0, biHeight = abs(bi.biHeight); i < biHeight; i++)
{
for(int q = 0; q < n; q++)
{
// iterate over pixels in scanline
for (int j = 0; j < bi.biWidth; j++)
{
// temporary storage
RGBTRIPLE triple;

// read RGB triple from infile
fread(&triple, sizeof(RGBTRIPLE), 1, inptr);

// write RGB triple to outfile
for (int r = 0; r < n; r++)
fwrite(&triple, sizeof(RGBTRIPLE), 1, outptr);

}

// skip over padding, if any
fseek(inptr, padding, SEEK_CUR);

//then add it back (to demonstrate how)
for (int k = 0; k < padding; k++)
fputc(0x00, outptr);
}
}

我正在尝试更改代码,以便我可以将 bmp 的大小调整为 n 倍(在宽度和高度上添加 n 个三元组)。我找到了一种迭代 for 循环的方法来调整宽度: for (int r = 0; r < n; r++) .我试图用高度做同样的事情,但我不明白为什么它不起作用。 for (int q = 0; q < n; q++)

最佳答案

在行级,您应该在单次读取像素后执行 n写道。这是通过添加另一个内部循环来完成的。复制的像素位于 triple操作过程中的变量。

在文件级别,您应该重复处理单行,多次读取和写入。

如果您的输入文件在磁盘上,它应该支持倒带。因此,您可以读取该行,写入它(在内部复制像素,如上所示),然后将文件倒回到该行的开头,再次读取该行,写入它,等等。

尝试使用 ftell 存储文件位置在读取该行之前,使用 fseek 将文件位置倒回到这一点。每次你需要处理它。

关于c - 如何调整位图大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569217/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com