next up previous
Next: 21 ネットワーク Up: 2013年のコンピューターノウハウ (Mac, CentOS) Previous: 19 Eigen

20 GLSC

tar xzf glsc-3.5.a.tar.Z
cd tar xzf glsc-3.5.a
patch -p1 < ../glsc-3.5+a.patch

上山パッチで、イメージファイルのダンプが出来るようになる。 それを使って動画ファイルも作れる。
sudo port install ImageMagick
sudo port install ffmpeg +nonfree

#include <magick/api.h>

void
g_dump(char *fname, Display *display, Window wid)
{
  ImageInfo *image_info;
  ExceptionInfo ex;
  int i;
  int argc = 5;
  char **argv;

  argv = (char **)malloc(sizeof(char *)*argc);
  for(i = 0; i < argc; i++)
    {
      argv[i] = (char *)malloc(sizeof(char)*256);
    }
  sprintf(argv[0], "glsc");
  sprintf(argv[1], "-silent");
  sprintf(argv[2], "-window");
  sprintf(argv[3], "%d", wid);
  sprintf(argv[4], "%s", fname);

  InitializeMagick(*argv);
  GetExceptionInfo(&ex);
  image_info = CloneImageInfo((ImageInfo *) NULL);

  ImportImageCommand(image_info, argc, argv, (char **)NULL, &ex);
  //image_info = DestroyImageInfo(image_info);

  for(i = 0; i < argc; i++)
    {
      free(argv[i]);
    }

  free(argv);
}

うーん?と思わないでもないけれど。 この g_dump(), そもそも GLSC に入れてしまえば良いような気がする。

それはさておき使い方の説明をする。 例えば次のようなコードで連番ファイル名のイメージファイルを出力する。
  int id;
  char filename[128];
  Display *display;
  Window window;
...
  display = g_get_display();
  window = g_get_window();
...
  sprintf(filename, "daentai%04d.jpg", id);
  g_dump(filename, display, window);
こうして作成した daentai0000.jpg, daentai0001.jpg, $ \cdots$ から次のようにして動画ファイルを作れる。
  ffmpeg -i daentai%04d.jpg anim.avi

(どのフォーマットが良いのか、実は詳しくないので…)

以上の上山パッチと桂田パッチはバッティングしない。 自分の内輪用に Mac で用いる glsc-daishin-mk.tar.gz (こういう配布をして良いか分らないのでパスワード付きです) を用意した。
sudo tar xzf glsc-daishin-mk.tar.gz -C /usr/local
でインストールできる。パッチを用意しようと思う。


next up previous
Next: 21 ネットワーク Up: 2013年のコンピューターノウハウ (Mac, CentOS) Previous: 19 Eigen
桂田 祐史
2014-04-02