From 23c1c9363c730dfafc683bd00920a2c33cc07ee2 Mon Sep 17 00:00:00 2001 From: kramm Date: Tue, 14 Jan 2003 23:44:09 +0000 Subject: [PATCH] -o support for jpg and png. --- src/swfextract.c | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/swfextract.c b/src/swfextract.c index 28a45a3..15be5a5 100644 --- a/src/swfextract.c +++ b/src/swfextract.c @@ -434,13 +434,20 @@ int findjpegboundary(U8*data, int len) void handlejpeg(TAG*tag) { char name[80]; + char*filename = name; FILE*fi; - sprintf(name, "pic%d.jpeg", GET16(tag->data)); + + sprintf(name, "pic%d.jpg", GET16(tag->data)); + if(numextracts==1) { + filename = destfilename; + if(!strcmp(filename,"output.swf")) + filename = "output.jpg"; + } /* swf jpeg images have two streams, which both start with ff d8 and end with ff d9. The following code handles sorting the middle bytes out, so that one stream remains */ if(tag->id == ST_DEFINEBITS && tag->len>2 && jpegtables) { - fi = save_fopen(name, "wb"); + fi = save_fopen(filename, "wb"); fwrite(jpegtables, 1, jpegtablessize-2, fi); //don't write end tag (ff,d8) fwrite(&tag->data[2+2], tag->len-2-2, 1, fi); //don't write start tag (ff,d9) fclose(fi); @@ -451,7 +458,7 @@ void handlejpeg(TAG*tag) if(pos<0) return; pos+=2; - fi = save_fopen(name, "wb"); + fi = save_fopen(filename, "wb"); fwrite(&tag->data[2], pos-2, 1, fi); fwrite(&tag->data[pos+4], end-(pos+4), 1, fi); fclose(fi); @@ -462,7 +469,7 @@ void handlejpeg(TAG*tag) if(pos<0) return; pos+=6; - fi = save_fopen(name, "wb"); + fi = save_fopen(filename, "wb"); fwrite(&tag->data[6], pos-6, 1, fi); fwrite(&tag->data[pos+4], end-(pos+4), 1, fi); fclose(fi); @@ -538,6 +545,7 @@ static void png_end_chunk(FILE*fi) void handlelossless(TAG*tag) { char name[80]; + char*filename = name; FILE*fi; int width, height; int crc; @@ -624,7 +632,12 @@ void handlelossless(TAG*tag) } sprintf(name, "pic%d.png", id); - fi = save_fopen(name, "wb"); + if(numextracts==1) { + filename = destfilename; + if(!strcmp(filename,"output.swf")) + filename = "output.png"; + } + fi = save_fopen(filename, "wb"); fwrite(head,sizeof(head),1,fi); png_start_chunk(fi, "IHDR", 13); -- 1.7.10.4