2

全部成交,

我需要在 MFC2010 中将 gif 格式的动画图片解码成一些位图文件。有没有解码gif图片的库?我不能使用 GDIPlus,因为程序必须在 windows XP 上运行。如果有人为我提供库、Activex、dll 或类似的东西,我将不胜感激。

非常感谢,谢文·扎格姆

4

4 回答 4

3

使用 ImageMagick 的 C++ API ( Magick++ ) 非常简单:

/* list of Image to store the GIF's frames */
std::vector<Magick::Image> imageList; 

/* read all the frames of the animated GIF */
Magick::readImages( &imageList, "animated.gif" );

/* optionnally coalesce the frame sequence depending on the expected result */
Magick::coalesceImages( &imageList, imageList.begin(), imageList.end());

/* store each frame in a separate BMP file */
for(unsigned int i = 0; i < imageList.size(); ++i) {
    std::stringstream ss;
    ss << "frame" << i << ".bmp";
    imageList[i].write(ss.str());
}
于 2013-04-30T12:43:20.423 回答
1

WIC(包含在 Vista 中,可用于 XP)提供CLSID_WICGifDecoderCOM 组件。

于 2013-05-02T13:38:28.780 回答
1

使用 ImageMagick 的 C++ API (Magick++) 试试这个,在 VS210 上测试:

#include <Magick++.h>
#include <string>
#include <iostream>
#include <list>

using namespace std;
using namespace Magick;

void kk(char * nombre, char *ext)
{
/* list of Image to store the GIF's frames */
std::list<Magick::Image> imageList; 
/* read all the frames of the animated GIF */
Magick::readImages(  &imageList, nombre );
/* compone las diferencias para obtener los cuadros reales */
Magick::coalesceImages(&imageList,imageList.begin( ),imageList.end( ));
/* store each frame in a separate BMP file */
 list <Magick::Image>::iterator it;
 int i=1;
 for ( it = imageList.begin( ); it != imageList.end( ); it++ , i++)
    {
    std::string name =  "frame" +  to_string((_Longlong)(i))  + ext ;
    it->write(name);
    }
}
int main( int /*argc*/, char ** argv)
{

  // Initialize ImageMagick install location for Windows
  InitializeMagick(*argv); 
  try {
    kk("luni0.gif", ".png"); // using  ".bmp", ".jpg", ".png", OK
    return 0;
  }
    catch( exception &error_ )
    {
      cout << "Caught exception: " << error_.what() << endl;
      return 1;
    }
  }
于 2013-08-12T20:28:04.287 回答
0

已经很久了,但我记得曾经使用OleLoadPicture在旧版本的 Windows 上打开 GIF 和 PNG 文件,尽管文档似乎表明它仅适用于 BMP、ICO 和 WMF。

于 2013-05-02T16:19:53.987 回答