Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gif-h库的简单使用示例_C++_Animated Gif - Fatal编程技术网

C++ gif-h库的简单使用示例

C++ gif-h库的简单使用示例,c++,animated-gif,C++,Animated Gif,我正在尝试为创建一个最小使用示例 但是,从大小为imageWidth*imageHeight的向量开始,第二个gifWriteName调用抛出访问冲突读取位置异常 我的尝试: #include <gif.h> #include "BOBImageConversion.h" int main(void) { // USAGE: // Create a GifWriter struct. Pass it to GifBegin() to initialize and wr

我正在尝试为创建一个最小使用示例

但是,从大小为
imageWidth*imageHeight
向量开始,第二个gifWriteName调用抛出访问冲突读取位置异常

我的尝试:

#include <gif.h>
#include "BOBImageConversion.h"
int main(void)
{
    // USAGE:
    // Create a GifWriter struct. Pass it to GifBegin() to initialize and write the header.
    // Pass subsequent frames to GifWriteFrame().
    // Finally, call GifEnd() to close the file handle and free memory.

    int delay = 100;
    auto i1 = BOBImageIO::BOBLoadImage("Camera7.png");
    auto i2 = BOBImageIO::BOBLoadImage("Camera18.png");

    vector<uint8_t> vi1 = BOBImageConversion::ARGB2RGBAuint8(i1);
    vector<uint8_t> vi2 = BOBImageConversion::ARGB2RGBAuint8(i2);
    cout << (vi1.size() == i1.Width()*i1.Height()) << endl;         // true
    cout << (vi2.size() == i2.Width()*i2.Height()) << endl;         // true

    auto fileName = "gif.gif";
    GifWriter g;
    GifBegin(&g, fileName, i1.Width(), i1.Height(), delay);
    GifWriteFrame(&g, vi1.data(), i1.Width(), i1.Height(), delay);
    GifWriteFrame(&g, vi2.data(), i2.Width(), i2.Height(), delay); // Exception thrown: Access violation reading location 
    GifEnd(&g);

    return 0;
}
#包括
#包括“BOBImageConversion.h”
内部主(空)
{
//用法:
//创建GifWriter结构。将其传递给GifBegin()以初始化和写入标头。
//将后续帧传递给gifWriteName()。
//最后,调用GifEnd()关闭文件句柄并释放内存。
int延迟=100;
auto i1=BOBImageIO::BOBLoadImage(“Camera7.png”);
自动i2=BOBImageIO::BOBLoadImage(“Camera18.png”);
向量vi1=BOBImageConversion::ARGB2RGBAuint8(i1);
向量vi2=BOBImageConversion::ARGB2RGBAuint8(i2);
这行得通吗

#include <vector>
#include <cstdint>
#include <gif.h>
int main()
{
    int width = 100;
    int height = 200;
    std::vector<uint8_t> vi1(width * height * 4, 0);
    std::vector<uint8_t> vi2(width * height * 4, 255);

    auto fileName = "bwgif.gif";
    int delay = 100;
    GifWriter g;
    GifBegin(&g, fileName, width, height, delay);
    GifWriteFrame(&g, vi1.data(), width, height, delay);
    GifWriteFrame(&g, vi2.data(), width, height, delay);
    GifEnd(&g);

    return 0;
}
#包括
#包括
#包括
int main()
{
整数宽度=100;
整数高度=200;
标准:向量vi1(宽度*高度*4,0);
标准:向量vi2(宽*高*4255);
自动文件名=“bwgif.gif”;
int延迟=100;
吉福;
gif开始(&g、文件名、宽度、高度、延迟);
gifWriteName(&g,vi1.data(),宽度,高度,延迟);
gifWriteName(&g,vi2.data(),宽度,高度,延迟);
吉芬德(g&g);
返回0;
}

g
是用
i1
大小初始化的。也许
i2
有不同的大小?这是图像加载上的一个错误,我忘记了通道缺少一个包含向量的include,向量应该以std名称空间为前缀。uint8\t由gif.h拉取,但依赖它不是一个好主意。还有主参数T列表应该是空的C++,如“int main()”。