November 9, 2009

take a screenshot of swf file

1. Sorry for my bad english
2. Please, help me :)

I need to take a screenshot of swf and save it as image file. I found this:
I wrote something like this:

#include <stdlib.h>
#include <iostream>
#include <swfdec/swfdec.h>
#include <cairo.h>

using namespace std;

void swfdec_player_save (SwfdecPlayer *player, guint width, guint height, const char *filename) {
cairo_surface_t *surface;
cairo_t *cr;

surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width, height);
cr = cairo_create (surface);
swfdec_player_render (player, cr);
cairo_destroy (cr);
cairo_surface_write_to_png (surface, filename);
cairo_surface_destroy (surface);

int main(int argc, char *argv[]) {
char *input = argv[1];
char *output = argv[2];

SwfdecPlayer *player = swfdec_player_new(NULL);
SwfdecURL *url = swfdec_url_new_from_input(input);
swfdec_player_set_url(player, url);

swfdec_player_save(player, 300, 300, output);

return 0;

, but it doesn't save screenshot to file, it save just empty png file with transparent background.
How can I fix it?

Click Here!