;
c int width, height, channels; unsigned char *image = stbi_load("image.jpg", &width, &height, &channels, 0);
这段代码将加载名为"image.jpg"的图片,并将图片的宽度、高度、通道数保存到相应的变量中。同时,图片像素数据将保存在image数组中。
显示图片
在你的代码中,调用Windows API函数来创建一个窗口,并在窗口中显示图片: ```c #include
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { // 创建窗口 HWND hwnd = CreateWindow( "STATIC", "Image Viewer", WS_VISIBLE | WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, width, // 图片宽度 height, // 图片高度 NULL, NULL, hInstance, NULL );
// 将图片数据绘制到窗口
HDC hdc = GetDC(hwnd);
BITMAPINFO bmi = {0};
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
bmi.bmiHeader.biWidth = width;
bmi.bmiHeader.biHeight = -height; // 使用负值翻转图片
bmi.bmiHeader.biPlanes = 1;
bmi.bmiHeader.biBitCount = 24;
SetDIBitsToDevice(hdc, 0, 0, width, height, 0, 0, 0, height, image, &bmi, DIB_RGB_COLORS);
// 消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
// 释放资源
stbi_image_free(image);
ReleaseDC(hwnd, hdc);
DestroyWindow(hwnd);
return 0;
} ``` - 这段代码使用CreateWindow函数创建了一个窗口,并使用SetDIBitsToDevice函数将图片数据绘制到窗口中。 - 图片数据使用BITMAPINFO结构体来描述,然后传递给SetDIBitsToDevice函数来绘制。
编译和运行代码
需要注意的是,以上只是一个简单的示例,展示了使用stb_image和Windows API来解析和显示图片的基本步骤。实际上,显示图片的方式和平台有关,不同平台可能需要使用不同的库或工具。此外,还需要进一步处理错误、释放资源等。具体的实现方式还需根据实际需求和平台来确定。
【相关推荐】