SAVE_PNG : my function
int Img_Save_Png( char name, unsigned char buffer,
int tx, int ty, int type_img,
int nb_col, RGB *palette )
{
FILE *file=fopen(name,“wb”);
png_structp write_png;
png_infop info_ptr;
unsigned char **row_pointers=NULL; // a modifier pour etre en
// conformite avec libpng
int i=0;
if (!file)
return 0;
write_png = png_create_write_struct(PNG_LIBPNG_VER_STRING,
NULL, NULL, NULL);
info_ptr = png_create_info_struct(write_png);
png_init_io(write_png, file);
info_ptr->width=tx;
info_ptr->height=ty;
info_ptr->rowbytes=tx;
info_ptr->bit_depth=8;
info_ptr->interlace_type=0;
info_ptr->num_palette=0;
info_ptr->palette=NULL;
info_ptr->valid=0;
switch( type_img )
{
case i_RGB:
info_ptr->rowbytes *= 3;
info_ptr->sig_bit.red=8;
info_ptr->sig_bit.green=8;
info_ptr->sig_bit.blue=8;
info_ptr->color_type=PNG_COLOR_TYPE_RGB;
break;
case i_GRAY:
info_ptr->sig_bit.gray=8;
info_ptr->color_type=PNG_COLOR_TYPE_GRAY;
break;
case i_PALETTE:
info_ptr->valid=PNG_INFO_PLTE;
info_ptr->num_palette=nb_col;
info_ptr->color_type=PNG_COLOR_TYPE_PALETTE;
info_ptr->palette=(png_color*) malloc(nb_col*sizeof(png_color));
for(i=0; i<nb_col; i++ )
{
info_ptr->palette[i].red=palette[i].r;
info_ptr->palette[i].green=palette[i].v;
info_ptr->palette[i].blue=palette[i].b;
}
break;
}
png_write_info(write_png, info_ptr);
/*
calcul de row_pointers
/
row_pointers=(unsigned char*) malloc( info_ptr->heightsizeof(unsigned
char) );
row_pointers[0]=buffer;
for(i=1; i<info_ptr->height; i++ )
{
// this line must be changed to use SDL_Surface
row_pointers[i] = row_pointers[i-1] + info_ptr->rowbytes;
}
png_write_image(write_png, row_pointers);
png_write_end(write_png, info_ptr);
if ( info_ptr ) free( info_ptr->palette );
free( row_pointers );
png_destroy_write_struct(&write_png, &info_ptr);
return 1;
}----------------
Gloire ? mon saigneur Arioch
Murlock (http://www.murlock.org)
----- Original Message -----
From: stephena@roadrunner.nf.net (Stephen Anthony)
To:
Sent: Sunday, February 03, 2002 3:42 PM
Subject: Re: [SDL] Best library to use for saving screenshots of SDL
programs…
On February 3, 2002 11:02 am, you wrote:
SDL can save images in BMP format. A TGA saver can be found at
ftp://ptah.lnf.kth.se/pub/misc/savetga.c
Since conversion programs are common enough, it’s rarely useful to
spend effort on more than one format for screenshots
Thanks for the info. Unfortunately, the program has a specification that
it must save images in png format. I can drop support for everything
else, but it must at least save in png.
I guess I will do what you have done, and write a saver for png myself.
Thanks,
Steve
SDL mailing list
SDL at libsdl.org
http://www.libsdl.org/mailman/listinfo/sdl