Board logo

标题: [已解决] 请问,这种图画循环播放的情况,要不要进行图片释放呢? [打印本页]

作者: zzz19760225    时间: 2024-9-9 19:43     标题: [已解决] 请问,这种图画循环播放的情况,要不要进行图片释放呢?

本帖最后由 zzz19760225 于 2024-9-10 11:09 编辑

C语言找播放gif动图,没结果,就找了用下层文件夹代替的路子,简单简易。
但是对图片循环无限播放,是否需要清除这些播放的图片内容,不懂啊。
求解:
这种模仿gif动图的模式,需不需要释放动作?
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <conio.h>
  4. #include <windows.h>
  5. #include <graphics.h>
  6. int main() {
  7.     initgraph(640, 480);
  8.     char filePath[1024];            // 文件路径数组
  9.     int n = 1;              
  10.     while (1) {
  11.         
  12.         sprintf(filePath, "%s\\%d.png", "李寻欢", n);//本文件夹里下一层文件夹“李寻欢”
  13.         IMAGE img;
  14.         loadimage(&img, filePath,50,50);//图片的大小
  15.         putimage(20, 30, &img);         //图片的竖横量
  16.       //freeimage(&img);                // 释放图片资源
  17.       //destroyimage(&img);  // 释放图片资源
  18.           //d:\dos\c\a1.cpp(19) : error C2065: 'destroyimage' : undeclared identifier
  19.           //错误 C2065 表示 'destroyimage' 标识符未声明。
  20.   //这意味着编译器在处理源文件 d:\dos\c\a1.cpp 的第 19 行时,找不到名为 'destroyimage' 的函数或变量。
  21.         Sleep(200);
  22.         n = (n % 4) + 1; //递增图片索引, 假设文件名是1.png, 2.png, ..., 假设最多有4张图片
  23.     }
  24.     closegraph();
  25. return 0;
  26. }
复制代码

作者: Five66    时间: 2024-9-9 22:41

不怕占用资源过多卡顿或奔溃或内存泄露之类的话就可以不释放,而且这样每读一次就释放一次很可能很影响性能的,建议一次性就将所有图片读取进来,然后显示,完后再一次性释放所有图片
作者: zzz19760225    时间: 2024-9-10 08:01

本帖最后由 zzz19760225 于 2024-9-10 08:02 编辑

还释放不了呢!
百度AI“easyx如何释放载入的图片”:
  1. 在EasyX图形库中,释放载入的图片通常不需要显式地进行,因为EasyX在处理图像时采用的是引用计数机制。这意味着,当你将图像加载到一个IMAGE对象中时,该图像数据实际上是被EasyX库所管理的,而不是由你的程序直接控制。因此,你不需要(也不能)直接释放图像数据。当你不再需要使用该IMAGE对象时,只要确保没有其他变量引用它,EasyX库便会在适当的时候自动管理图像数据的释放。
  2. 在EasyX中处理图像的基本步骤通常包括:
  3. 声明一个IMAGE对象来存储图像数据。
  4. 使用loadimage函数将图像加载到这个IMAGE对象中。
  5. 在需要的地方使用putimage或其他图形操作函数来显示或处理图像。
  6. 在这个过程中,图像数据的管理完全由EasyX库负责。当你不再需要这个IMAGE对象时,只需确保没有其他变量引用它,然后让变量离开其作用域即可。EasyX会自动处理不再使用的图像数据的释放。因此,你不需要(也不能)手动释放这些图像数据‌
复制代码
不过也算是好事吧,省事了。




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2