gpt4 book ai didi

c - 为什么我的 ppm 文件中的图像有点偏差?

转载 作者:太空宇宙 更新时间:2023-11-04 04:47:13 26 4
gpt4 key购买 nike

任务是在具有 800 列和 600 行的图像上创建俄罗斯国旗图像。因此,旗帜被分成三个相等的部分(顶部为白色,中间为蓝色,底部为红色)

这是我的代码:

#include <stdio.h>

int main() {
printf("P6\n");
printf("%d %d\n", 800, 600);
printf("255\n");

int width, heightWhite, heightBlue, heightRed, i, j;
unsigned char Rcolor, Bcolor, Gcolor;

width = 800;
heightWhite = 200;
heightBlue = 400;
heightRed = 600;

for (j = 0; j <= heightWhite; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 255;
Bcolor = 255;
Gcolor = 255;

printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}

for (j = 201; j <= heightBlue; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 0;
Bcolor = 255;
Gcolor = 0;

printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}

for (j = 401; j <= heightRed; j++) {
for (i = 0; i <= width; i++) {
Rcolor = 255;
Bcolor = 0;
Gcolor = 0;

printf("%c%c%c", Rcolor, Gcolor, Bcolor);
}
}

return (0);
}

但是当我查看我的程序生成的图像时,我注意到蓝色和红色条的顶部并不完全水平(看起来使蓝色和红色条顶部的行的一部分是高于前面的像素)我不明白为什么我会得到这个。我已经在 Gimp 上运行了我的讲师的 ppm 文件(这是我用来查看 ppm 文件的工具)并且线条应该是完全水平的。有任何想法吗?

(我不确定如何附加我的 ppm 文件,但它应该是这样的:http://users.csc.calpoly.edu/~dekhtyar/101-Fall2013/labs/lab7.html)(这是第一个标志)

最佳答案

您正在为每一行多打印一个像素(每种颜色的最后一行多打印 200 个像素)。

改变

for (i = 0; i <= width; i++) {

for (i = 0; i < width; i++) {

编辑:

但我怎么可以说“<=”表示高度?

for (j = 0; j < heightWhite; j++)  = 0...199 = 200 items
for (j = 1; j <= heightWhite; j++) = 1...200 = 200 items

请注意,您的所有代码都可以用两个循环执行:

#include <stdio.h>

int main(void)
{
int width = 800, height = 600, icolor = 0, i, j;
unsigned char color[][3] = {
{255, 255, 255}, /* white */
{0, 0, 255}, /* blue */
{255, 0, 0} /* red */
};

printf("P6\n");
printf("%d %d\n", width, height);
printf("255\n");

for (i = 0; i < height; i++) {
for (j = 0; j < width; j++) {
printf("%c%c%c", color[icolor][0], color[icolor][1], color[icolor][2]);
}
if (i && (i % 200 == 0)) icolor++; /* 200, 400, 600 */
}
return 0;
}

关于c - 为什么我的 ppm 文件中的图像有点偏差?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651249/

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