我目前尝试构建一个16位灰度的“渐变”图像,但我的输出看起来很奇怪,所以我显然没有正确理解。我希望有人能为我的问题提供一些帮助。我认为我写的“位图”是错误的?但我不确定。
#include "CImg.h"
using namespace std;
unsigned short buffer[1250][1250];
void fill_buffer()
{
unsigned short temp_data = 0;
for (int i =0;i < 1250; i++)
{
for (int j =0 ;j < 1250;j++)
{
buffer[i][j] = temp_data;
}
temp_data += 20;
}
}
int main()
{
fill_buffer();
auto hold_arr = (uint8_t *)&buffer[0][0];
cimg_library::CImg<uint8_t> img(hold_arr, 1250, 1250);
img.save_bmp("test.bmp");
return 0;
}
当前输出:
uint8_t*
指针的二维数组。请使用一维数组。此外,在16位格式中,您需要移动颜色并将它们组合以生成uint16_t
。实际上,您正在以24位格式保存图像,这就是为什么您会看到任何灰色的颜色。使用位图查看器并从位图文件中读取格式信息。请注意,24位格式对于渐变效果更好,而且只比16位略大。您可能希望使用24位或PNG格式。 - Barmak Shemirani