gpt4 book ai didi

c++ - 只修改图像的开头而不是完全修改,如我所愿

转载 作者:行者123 更新时间:2023-11-28 05:37:34 25 4
gpt4 key购买 nike

我目前有一些代码可以读取以 tga 格式存储的图像,然后对其进行处理,然后将其存储在新的 tga 文件中。问题是只修改了底部的三分之一,其他三分之二与原始图像相同。这是代码:

int size = width*height*bpp;
char imageArray [size];
char * arrayPtr = &imageArray[0];
......
for (int x=0; x<width; x++) {
for (int y=0; y<height; y++) {
imageArray [x*height + 3*y] = 255;
imageArray [x*height + 3*y + 1] = 0;
imageArray [x*height + 3*y + 2] = 0;
}
}
fileWriter.write (arrayPtr, size);

从循环内部可以看出,我正在修改每个颜色值,在本例中是将其变成单色图像。不幸的是,只有底部的三分之一会被修改,即使循环迭代次数等于像素数,并且通过迭代进行三次操作,它的数量等于原始图像的字节数。所以我不知道我做错了什么,如果有任何建议,我将不胜感激。

最佳答案

整个偏移量必须乘以bpp,而不仅仅是y:

    imageArray [bpp*(x*height + y)] = 255;
imageArray [bpp*(x*height + y) + 1] = 0;
....

关于c++ - 只修改图像的开头而不是完全修改,如我所愿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37904456/

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