使用loadimage加载图片运行不显示
可打印错误信息
#include <graphics.h>
int main()
{
initgraph(640, 480);
IMAGE img;
if (!loadimage(&img, "C:\\path\\to\\image.jpg"))
{
printf("Error: %s\n", getlasterror());
return -1;
}
putimage(0, 0, &img);
getch();
closegraph();
return 0;
}
使用绝对路径实例 可参考
#include <graphics.h>
int main()
{
initgraph(640, 480);
IMAGE img;
loadimage(&img, "C:\\path\\to\\image.jpg");
putimage(0, 0, &img);
getch();
closegraph();
return 0;
}
在CLion下使用EasyX库中的LoadImage函数加载图片时出现问题,可能是因为EasyX库的处理方式与CLion中的默认设置不兼容。
你可以尝试在CLion的项目中添加以下代码来显式指定EasyX库的链接方式和路径:
#pragma comment(lib, "Winmm.lib") // 如果需要音频支持,还需要加入 Winmm 库
#pragma comment(lib, "EasyXa.lib") // EasyX 的静态库文件(使用静态库时)
//#pragma comment(lib, "EasyXU.lib") // EasyX 的静态库文件(使用 Unicode 版本时,仅支持 VC++)
//#pragma comment(lib, "EasyXW.lib") // EasyX 的静态库文件(使用 WideChar 版本时,仅支持 VC++)
#include <graphics.h> // EasyX 绘图库头文件
int main()
{
initgraph(640, 480); // 初始化图形窗口
IMAGE img; // EasyX 图像对象
LoadImage(&img, L"bg.png"); // 加载图片文件
putimage(0, 0, &img); // 绘制图片
_getch(); // 暂停等待用户按键
closegraph(); // 关闭图形窗口
return 0;
}
此外,如果你使用的是 EasyX 2021 版本,建议将EasyX的头文件(graphics.h等)和库文件(EasyXa.lib等)放在项目目录中,可以避免路径设置问题。
如果问题仍然存在,你可以访问EasyX官方论坛上查看更多关于在CLion下使用EasyX的问题和解决方案。
你这是相对路径啊,相对路径只需要:文件名.后缀名,没有当前./,不需要这个,你也可以找到图片右键把绝对路径复制放进去
你排查 了图片文件路径错误,那图片格式不支持、图像内存分配失败、图像处理错误这些因素呢?是否有把握?
如下面示例,使用loadimage函数加载图片,然后使用putimage函数将图片绘制到窗口中。最后,等待用户按下任意键退出程序,并释放图像内存。小小示例:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <easyx/easyx.h>
int main()
{
// 初始化图形界面
initgraph(640, 480);
// 加载图片
char* image_path = "image.jpg"; // 图片文件路径
unsigned char* image = loadimage(image_path); // 加载图片
if (image == NULL) {
printf("Failed to load image.\n");
return 1;
}
// 绘制图片
setbkcolor(WHITE); // 设置背景色为白色
setcolor(BLACK); // 设置前景色为黑色
fillrect(0, 0, getwidth(), getheight()); // 填充整个窗口
setcolor(RED); // 设置前景色为红色
putimage(0, 0, image, WHITE_BRUSH, getwidth(), getheight()); // 绘制图片
// 等待用户按下任意键退出程序
printf("Press any key to exit...\n");
getch();
// 释放图像内存
freeimage(image);
// 关闭图形界面
closegraph();
return 0;
}
参考我的这个代码片段,我这个在我的这个环境可以显示图片
// 创建我们的游戏窗口
initgraph(897,895);
// 显示我们的棋盘图片
// loadimage(0,"res/棋盘2.jpg"); // 不能显示
loadimage(0,"F:\\clion_learn\\learn_c\\chess\\res\\棋盘2.jpg");
// 播放提示音
mciSendString("play F:\\clion_learn\\learn_c\\chess\\res\\start.wav",0,0,0);
// PlaySound("F:\\clion_learn\\learn_c\\chess\\res/start.wav", nullptr, SND_FILENAME | SND_ASYNC);
// 加载黑棋和白棋棋子的图片
loadimage(&chessBlackImg,_T("F:\\clion_learn\\learn_c\\chess\\res\\black.png"),chessSize,chessSize,true);
loadimage(&chessWhiteImg,_T("F:\\clion_learn\\learn_c\\chess\\res\\white.png"),chessSize,chessSize,true);
举个例子
include_directories(./EasyX/include)
link_directories(./EasyX/lib64)
link_libraries(libeasyx.a)
#include <graphics.h> // 引用图形库头文件
#include <conio.h>
int main()
{
initgraph(640, 480); // 创建绘图窗口,大小为 640x480 像素
circle(200, 200, 100); // 画圆,圆心(200, 200),半径 100
_getch(); // 按任意键继续
closegraph(); // 关闭绘图窗口
return 0;
}
首先确认版本兼容性导致有些函数用了不起作用的情况,其次查看窗口大小宽高设置
请确保你提供给loadimage函数的图片路径是正确的。你可以使用绝对路径或相对路径来指定图片位置。如果图片不在当前工作目录下,需要提供完整的路径。
加载图片是用loadimageW函数试试,或者换一张图片试试,有可能是图片本身的问题
不要./,只要文件名
回答部分参考、引用ChatGpt以便为您提供更准确的答案:
根据您提供的信息,如果使用loadimage
加载图片时无法显示,即使将路径改为绝对路径也不显示,可能有以下几个可能的原因:
loadimage
函数,并且传递给该函数的参数正确。如果上述解决方案都没有解决您的问题,建议您提供更多的代码和错误信息,以便更准确地分析和解决问题。