git.asbjorn.biz
/
swftools.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
46aef94
)
-o support for jpg and png.
author
kramm
<kramm>
Tue, 14 Jan 2003 23:44:09 +0000
(23:44 +0000)
committer
kramm
<kramm>
Tue, 14 Jan 2003 23:44:09 +0000
(23:44 +0000)
src/swfextract.c
patch
|
blob
|
history
diff --git
a/src/swfextract.c
b/src/swfextract.c
index
28a45a3
..
15be5a5
100644
(file)
--- 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];
void handlejpeg(TAG*tag)
{
char name[80];
+ char*filename = name;
FILE*fi;
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
<ff d9 ff d8> bytes out, so that one stream remains */
if(tag->id == ST_DEFINEBITS && tag->len>2 && jpegtables) {
/* swf jpeg images have two streams, which both start with ff d8 and
end with ff d9. The following code handles sorting the middle
<ff d9 ff d8> 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);
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;
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);
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;
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);
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];
void handlelossless(TAG*tag)
{
char name[80];
+ char*filename = name;
FILE*fi;
int width, height;
int crc;
FILE*fi;
int width, height;
int crc;
@@
-624,7
+632,12
@@
void handlelossless(TAG*tag)
}
sprintf(name, "pic%d.png", id);
}
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);
fwrite(head,sizeof(head),1,fi);
png_start_chunk(fi, "IHDR", 13);