c语言代码怎么显示jpg图片
时间: 2023-07-28 22:06:27 浏览: 115
在C语言中,可以使用第三方图形库,比如OpenCV来显示jpg图片。下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <opencv2/opencv.hpp>
int main(int argc, char** argv )
{
if ( argc != 2 )
{
printf("usage: DisplayImage.out <Image_Path>\n");
return -1;
}
cv::Mat image;
image = cv::imread( argv[1], cv::IMREAD_COLOR );
if ( !image.data )
{
printf("No image data \n");
return -1;
}
cv::namedWindow("Display Image", cv::WINDOW_AUTOSIZE );
cv::imshow("Display Image", image);
cv::waitKey(0);
return 0;
}
```
这段代码使用OpenCV库读取并显示指定路径上的jpg图片。要运行此代码,您需要先安装OpenCV库,并使用适当的命令编译和链接代码。
相关问题
C语言显示jpg图片
要在 C 语言中显示 JPG 图片,你可以使用一些图像处理库,例如 OpenCV、SDL_image 或 stb_image。下面是一个使用 stb_image 库来加载和显示 JPG 图片的示例代码:
```c
#define STB_IMAGE_IMPLEMENTATION
#include "stb_image.h"
#include <stdio.h>
#include <stdlib.h>
#ifdef __APPLE__
#include <GLUT/glut.h>
#else
#include <GL/glut.h>
#endif
int width, height, channels;
unsigned char *image;
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
// 将图像数据绘制到屏幕上
glPixelZoom(1.0, -1.0);
glRasterPos2f(-1, 1);
glDrawPixels(width, height, GL_RGB, GL_UNSIGNED_BYTE, image);
glFlush();
}
int main(int argc, char **argv)
{
// 加载 JPG 文件
image = stbi_load("test.jpg", &width, &height, &channels, 3);
if (!image) {
fprintf(stderr, "Failed to load image: test.jpg\n");
exit(1);
}
// 初始化 GLUT
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA);
glutInitWindowSize(width, height);
glutCreateWindow("JPG Image Viewer");
// 设置 OpenGL 状态
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(-1, 1, -1, 1);
glMatrixMode(GL_MODELVIEW);
// 显示图像
glutDisplayFunc(display);
glutMainLoop();
// 释放内存
stbi_image_free(image);
return 0;
}
```
这段代码使用 stb_image 库加载了一个名为 "test.jpg" 的 JPG 文件,并将图像数据存储在内存中。然后,它使用 OpenGL 在屏幕上绘制了这个图像。你可以根据需要修改这段代码来适应你的应用场景。
C语言显示jpg图片,正常的代码
以下是一份使用 SDL_image 库加载和显示 JPG 图片的 C 语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <SDL2/SDL.h>
#include <SDL2/SDL_image.h>
int main(int argc, char *argv[])
{
// 初始化 SDL2
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
fprintf(stderr, "Failed to initialize SDL2: %s\n", SDL_GetError());
return 1;
}
// 初始化 SDL_image
if ((IMG_Init(IMG_INIT_JPG) & IMG_INIT_JPG) != IMG_INIT_JPG) {
fprintf(stderr, "Failed to initialize SDL_image: %s\n", IMG_GetError());
SDL_Quit();
return 1;
}
// 加载 JPG 图片
SDL_Surface *image_surface = IMG_Load("test.jpg");
if (!image_surface) {
fprintf(stderr, "Failed to load image: %s\n", IMG_GetError());
IMG_Quit();
SDL_Quit();
return 1;
}
// 创建窗口和渲染器
SDL_Window *window = SDL_CreateWindow("JPG Image Viewer",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
image_surface->w,
image_surface->h,
SDL_WINDOW_SHOWN);
if (!window) {
fprintf(stderr, "Failed to create window: %s\n", SDL_GetError());
SDL_FreeSurface(image_surface);
IMG_Quit();
SDL_Quit();
return 1;
}
SDL_Renderer *renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
if (!renderer) {
fprintf(stderr, "Failed to create renderer: %s\n", SDL_GetError());
SDL_DestroyWindow(window);
SDL_FreeSurface(image_surface);
IMG_Quit();
SDL_Quit();
return 1;
}
// 将图像渲染到屏幕上
SDL_Texture *texture = SDL_CreateTextureFromSurface(renderer, image_surface);
if (!texture) {
fprintf(stderr, "Failed to create texture: %s\n", SDL_GetError());
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_FreeSurface(image_surface);
IMG_Quit();
SDL_Quit();
return 1;
}
SDL_RenderCopy(renderer, texture, NULL, NULL);
SDL_RenderPresent(renderer);
// 等待窗口关闭
SDL_Event event;
while (1) {
if (SDL_WaitEvent(&event) != 0 && event.type == SDL_QUIT)
break;
}
// 释放资源
SDL_DestroyTexture(texture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_FreeSurface(image_surface);
IMG_Quit();
SDL_Quit();
return 0;
}
```
这个代码使用了 SDL2 和 SDL_image 库来加载和显示 JPG 图片。它通过使用 SDL_CreateWindow() 和 SDL_CreateRenderer() 创建了一个窗口和一个渲染器,并使用 SDL_CreateTextureFromSurface() 将图像渲染到屏幕上。最后,它使用 SDL_WaitEvent() 等待窗口关闭事件,然后释放了所有使用的资源。
阅读全文
相关推荐












