【问题标题】:Trying to encode a GIF file using giflib尝试使用 giflib 对 GIF 文件进行编码
【发布时间】:2016-10-23 04:13:56
【问题描述】:

我得到了图像数据和颜色表,我正在尝试使用 giflib 将其导出为单帧 GIF。我查看了 API,但无法使其正常工作。程序甚至在第一个函数处崩溃:

GifFileType image_out;
int errorCode = 0;
char* fileName = "SomeName.gif";
image_out = *EGifOpenFileName(fileName,true, &errorCode); 

据我了解,我首先需要通过指定文件名来打开文件,然后使用 fileHandle 更新它。然后填写屏幕描述,扩展名阻止图像数据并将3B结尾添加到文件中。然后使用 EGifSpew 导出整个 gif。问题是我什至不能使用 EGifOpenFileName();程序在该行崩溃。

谁能帮我giflib的API?这个问题变得非常令人沮丧。 谢谢。

编辑:

出于简单编码的目的,我不想指定颜色表,我只想对单帧 GIF 进行编码。

【问题讨论】:

  • 原型是GifFileType *EGifOpenFileName(char *GifFileName, bool GifTestExistance, int *ErrorCode),你的代码是怎么编译的?
  • 我忘了在中间加上“true”。我知道人们更喜欢写 GifFileType *image_in = EGifOpenFileName(fileName, true, &ErrorCode),但这种方式同样有效。

标签: c++ gif giflib


【解决方案1】:

原型是:

GifFileType *EGifOpenFileName(char *GifFileName, bool GifTestExistance, int *ErrorCode)

你应该写成

GifFileType* image_out = EGifOpenFileName(fileName,true, &errorCode);

注意GifFileType 不是 POD 类型,因此您应该这样复制。

【讨论】:

  • 好的,这就是问题所在。我很好奇为什么GifFileType* image_out = EGifOpenFileName(fileName,true, &errorCode);这个工作但是GifFileType* image_out; image_out =EGifOpenFileName(fileName,true, &errorCode);编译失败。
猜你喜欢
  • 1970-01-01
  • 2016-01-22
  • 2013-05-02
  • 2021-08-20
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
相关资源
最近更新 更多