mirror of
https://github.com/scottdraves/flam3.git
synced 2025-01-21 05:20:05 -05:00
16 bpc PNG images were not being written properly when strips were being used. while png_set_swap() is supposed to tell the system to reverse the order of the bits when writing the file, I was unable to get this to work, so I resorted to a brute-force reversal of the bits - but then forgot to put the bits BACK. This is not a problem for single strips, but with multiple strips things get very confused. png_set_swap would make this a non-issue.
git-svn-id: https://flam3.googlecode.com/svn/trunk@88 77852712-ef1d-11de-8684-7d64432d61a3
This commit is contained in:
parent
26f5c53f09
commit
b358966b64
@ -213,9 +213,9 @@ int main(int argc, char **argv) {
|
||||
f.bytes_per_channel = 1;
|
||||
|
||||
|
||||
image = (void *) malloc((size_t)channels *
|
||||
image = (void *) calloc((size_t)channels *
|
||||
(size_t)cps[0].width *
|
||||
(size_t)cps[0].height * f.bytes_per_channel);
|
||||
(size_t)cps[0].height * f.bytes_per_channel, sizeof(char));
|
||||
|
||||
if (dtime < 1) {
|
||||
fprintf(stderr, "dtime must be positive, not %d.\n", dtime);
|
||||
|
@ -295,7 +295,7 @@ int main(int argc, char **argv) {
|
||||
if (last_size != -1)
|
||||
free(image);
|
||||
last_size = this_size;
|
||||
image = (void *) malloc(this_size);
|
||||
image = (void *) calloc(this_size, sizeof(char));
|
||||
if (NULL==image) {
|
||||
fprintf(stderr,"Error allocating memory for image. Aborting\n");
|
||||
exit(1);
|
||||
@ -351,7 +351,7 @@ int main(int argc, char **argv) {
|
||||
sprintf(fname, "%s%05d.%s", prefix, i, format);
|
||||
}
|
||||
if (verbose) {
|
||||
fprintf(stderr, "writing %s...", fname);
|
||||
fprintf(stderr, "writing %s...", fname);
|
||||
}
|
||||
fp = fopen(fname, "wb");
|
||||
if (NULL == fp) {
|
||||
@ -381,8 +381,8 @@ int main(int argc, char **argv) {
|
||||
fprintf(fp, "P6\n");
|
||||
fprintf(fp, "%d %d\n255\n", cps[i].width, real_height);
|
||||
if (this_size != fwrite((unsigned char *)image, 1, this_size, fp)) {
|
||||
perror(fname);
|
||||
}
|
||||
perror(fname);
|
||||
}
|
||||
}
|
||||
/* Free string */
|
||||
free(fpc.genome);
|
||||
|
11
src/png.c
11
src/png.c
@ -106,8 +106,6 @@ void write_png(FILE *file, void *image, int width, int height, flam3_img_comment
|
||||
im[i] = htons(im[i]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (pngcom_enable==1)
|
||||
png_set_text(png_ptr, info_ptr, text, FLAM3_PNG_COM);
|
||||
@ -117,6 +115,15 @@ void write_png(FILE *file, void *image, int width, int height, flam3_img_comment
|
||||
png_write_end(png_ptr, info_ptr);
|
||||
png_destroy_write_struct(&png_ptr, &info_ptr);
|
||||
free(rows);
|
||||
|
||||
/* Swap back the bytes in case we're doing strips */
|
||||
if (2==bpc && testbe != htons(testbe)) {
|
||||
unsigned short *im = (unsigned short *)image;
|
||||
for (i=0; i<height*width*4; i++) {
|
||||
im[i] = htons(im[i]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
#define SIG_CHECK_SIZE 8
|
||||
|
Loading…
Reference in New Issue
Block a user