-Add prototype of PNG export function (WIP) -Updated libs files and information -Credit work of @dpethes
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
#include "Image_Exporter.h"
|
|
|
|
|
|
int saveToPNG(RS_IMAGE *img, char *tex_name) {
|
|
char tex_path[64];
|
|
FILE *_png_f = NULL;
|
|
png_structp png_ptr = NULL;
|
|
png_infop info_ptr = NULL;
|
|
//size_t x,y;
|
|
png_byte **row_ptrs = NULL;
|
|
//int pixel_size = 3;
|
|
//int depth = 8;
|
|
|
|
strcpy(tex_path,tex_name);
|
|
strcat(tex_path, ".png");
|
|
_png_f = fopen(tex_path, "wb");
|
|
if (_png_f == NULL) return EXIT_FAILURE;
|
|
png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
|
|
if (png_ptr == NULL) {
|
|
fclose(_png_f);
|
|
return EXIT_FAILURE;
|
|
}
|
|
info_ptr = png_create_info_struct(png_ptr);
|
|
if (info_ptr == NULL) {
|
|
fclose(_png_f);
|
|
return EXIT_FAILURE;
|
|
}
|
|
|
|
// Set image attributes
|
|
png_set_IHDR(png_ptr, info_ptr, img->width, img->height, 8, PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);
|
|
|
|
// Init PNG datas
|
|
row_ptrs = png_malloc(png_ptr, img->height * sizeof(png_byte));
|
|
/*for (y=0; y<img->height; y++) {
|
|
png_byte *row = png_malloc(png_ptr, img->width*sizeof(unsigned char)*3);
|
|
row_ptrs[y] = row;
|
|
for (x=0; x<img->width; x++) {
|
|
unsigned char pixel[3] = pixelAt(img->pixels);
|
|
}
|
|
}*/
|
|
memcpy(row_ptrs, img->pixels, sizeof(unsigned char)*3*img->height*img->width);
|
|
|
|
png_init_io(png_ptr, _png_f);
|
|
png_set_rows(png_ptr, info_ptr, row_ptrs);
|
|
png_write_png(png_ptr, info_ptr, PNG_TRANSFORM_IDENTITY, NULL);
|
|
|
|
png_free(png_ptr, row_ptrs);
|
|
png_destroy_write_struct(&png_ptr, &info_ptr);
|
|
fclose(_png_f);
|
|
|
|
return EXIT_SUCCESS;
|
|
}
|