我正在尝试使用 stb_image_write 将一个简单的图像文件写入磁盘。我使用最简单的测试用例:128 x 128 像素的 RGB 图像。
我在网上找到了这个例子,那个家伙似乎说它工作得很好,而且它看起来和我写了 2 个小时的完全一样:
void save_image(int w, int h, int channels_num)
{
int data[w * h * channels_num];
int index = 0;
for (int j = h - 1; j >= 0; --j)
{
for (int i = 0; i < w; ++i)
{
float r = (float)i / (float)w;
float g = (float)j / (float)h;
float b = 0.2f;
int ir = int(255.0 * r);
int ig = int(255.0 * g);
int ib = int(255.0 * b);
data[index++] = ir;
data[index++] = ig;
data[index++] = ib;
}
}
stbi_write_jpg("jpg_test_.jpg", w, h, channels_num, data, 100);
}
save_image(128, 128, 3);
结果应该是一个漂亮的颜色渐变,但我能得到的只是一个带有一些垂直红、绿、蓝和黑线的有效文件。图像的尺寸还可以。我真的在这里找不到解决方案。我在 linux Jessie 上。可能存在“字节顺序”问题或类似的问题吗?