mirror of
https://git.code.sf.net/p/libpng/code.git
synced 2025-07-10 18:04:09 +02:00
Imported from pngcrush-1.3.4.tar
This commit is contained in:
27
README.txt
27
README.txt
@@ -29,10 +29,11 @@ This is the copyright notice, disclaimer, and license:
|
||||
|
||||
This is the output of "pngcrush" and "pngcrush -help":
|
||||
|
||||
| pngcrush 1.3.2, Copyright (C) 1998, 1999, Glenn Randers-Pehrson
|
||||
|
||||
| pngcrush 1.3.4, Copyright (C) 1998, 1999, 2000, Glenn Randers-Pehrson
|
||||
| This is a free, open-source program. Permission is
|
||||
| granted to everyone to use pngcrush without fee.
|
||||
| This program was built with libpng version 1.0.5k,
|
||||
| This program was built with libpng version 1.0.5m,
|
||||
| Copyright (C) 1995, Guy Eric Schalnat, Group 42 Inc.,
|
||||
| Copyright (C) 1996, 1997 Andreas Dilger,
|
||||
| Copyright (C) 1998, 1999, Glenn Randers-Pehrson,
|
||||
@@ -45,15 +46,15 @@ usage: pngcrush [options] infile.png outfile.png
|
||||
pngcrush -d dir [other options] files.png ...
|
||||
|
||||
options:
|
||||
-brute (Use brute-force, try 114 different methods)
|
||||
-brute (Use brute-force, try 114 different methods [11-124])
|
||||
-c color_type of output file [0, 2, 4, or 6]
|
||||
-d directory_name (where output files will go)
|
||||
-double_gamma (used for fixing gamma in PhotoShop 5.0/5.02 files)
|
||||
-e extension (used for creating output filename)
|
||||
-f user_filter [0-5]
|
||||
-force (Write a new output file even if larger than input)
|
||||
-g gamma_value (float, e.g., 0.45455)
|
||||
-itxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
-g gamma (float or fixed*100000, e.g., 0.45455 or 45455)
|
||||
-itxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
-l zlib_compression_level [0-9]
|
||||
-m method [0 through 200]
|
||||
-max maximum_IDAT_size [1 through 524288]
|
||||
@@ -66,14 +67,14 @@ options:
|
||||
-srgb [0, 1, 2, or 3]
|
||||
-text b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
-trns index red green blue gray
|
||||
-verbose (write more detailed information)
|
||||
-v (display more detailed information)
|
||||
-version (display the pngcrush version)
|
||||
-w compression_window_size [32, 16, 8, 4, 2, 1, 512]
|
||||
-h (help)
|
||||
-p (pause)
|
||||
|
||||
|
||||
options:
|
||||
-brute (Use brute-force, try 114 different methods)
|
||||
-brute (Use brute-force, try 114 different methods [11-124])
|
||||
|
||||
Very time-consuming and generally not worthwhile.
|
||||
You can restrict this option to certain filter types,
|
||||
@@ -120,13 +121,13 @@ options:
|
||||
if it is smaller than any generated file and no chunk
|
||||
additions, removals, or changes were requested.
|
||||
|
||||
-g gamma_value (float, e.g., 0.45455)
|
||||
-g gamma (float or fixed*100000, e.g., 0.45455 or 45455)
|
||||
|
||||
Value to insert in gAMA chunk, only if the input
|
||||
file has no gAMA chunk. To replace an existing
|
||||
gAMA chunk, use the '-replace_gamma' option.
|
||||
|
||||
-itxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
-itxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
|
||||
Compressed iTXt chunk to insert (see -text).
|
||||
|
||||
@@ -199,10 +200,12 @@ options:
|
||||
You must give all five parameters regardless of the
|
||||
color type, scaled to the output bit depth.
|
||||
|
||||
-verbose (write more detailed information)
|
||||
-v (display more detailed information)
|
||||
|
||||
Repeat the option (use "-v -v") for even more.
|
||||
|
||||
-version (display the pngcrush version)
|
||||
|
||||
-w compression_window_size [32, 16, 8, 4, 2, 1, 512]
|
||||
|
||||
Size of the sliding compression window, in kbytes
|
||||
@@ -216,7 +219,7 @@ options:
|
||||
zlib compression strategy to use with the preceding
|
||||
'-m method' argument.
|
||||
|
||||
-zitxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
-zitxt b[efore_IDAT]|a[fter_IDAT] "keyword" "text"
|
||||
|
||||
Compressed iTXt chunk to insert (see -text).
|
||||
|
||||
|
||||
50
pngcrush.c
50
pngcrush.c
@@ -15,12 +15,12 @@
|
||||
* occasionally creating Linux executables.
|
||||
*/
|
||||
|
||||
#define PNGCRUSH_VERSION "1.3.3"
|
||||
#define PNGCRUSH_VERSION "1.3.4"
|
||||
|
||||
/*
|
||||
* COPYRIGHT NOTICE, DISCLAIMER, AND LICENSE:
|
||||
*
|
||||
* Copyright (c) 1998, 1999, Glenn Randers-Pehrson (randeg@alum.rpi.edu)
|
||||
* Copyright (c) 1998, 1999, 2000 Glenn Randers-Pehrson (randeg@alum.rpi.edu)
|
||||
*
|
||||
* The pngcrush program is supplied "AS IS". The Author disclaims all
|
||||
* warranties, expressed or implied, including, without limitation, the
|
||||
@@ -54,6 +54,10 @@
|
||||
*
|
||||
* Change log:
|
||||
*
|
||||
* Version 1.3.4 (built with libpng-1.0.5m)
|
||||
*
|
||||
* Do not allow pngcrush to overwrite the input file.
|
||||
*
|
||||
* Version 1.3.3 (built with libpng-1.0.5m)
|
||||
*
|
||||
* Restored ability to enter gamma as a float even when floating point
|
||||
@@ -175,6 +179,9 @@
|
||||
static PNG_CONST char *progname = "pngtest.png";
|
||||
static PNG_CONST char *inname = "pngtest.png";
|
||||
static PNG_CONST char *outname = "pngout.png";
|
||||
#if 0
|
||||
static PNG_CONST char *tmpname = "pngtmp.png";
|
||||
#endif
|
||||
static PNG_CONST char *directory_name = "pngcrush.bak";
|
||||
static PNG_CONST char *extension = "_C.png";
|
||||
|
||||
@@ -527,6 +534,9 @@ main(int argc, char *argv[])
|
||||
png_fixed_point file_gamma=0;
|
||||
#endif
|
||||
char *cp;
|
||||
#if 0
|
||||
FILE *tmpfile (void);
|
||||
#endif
|
||||
|
||||
int i;
|
||||
row_buf = (png_bytep)NULL;
|
||||
@@ -992,7 +1002,7 @@ main(int argc, char *argv[])
|
||||
if(verbose > 0)
|
||||
{
|
||||
fprintf(STDERR,
|
||||
"\n | %s %s, Copyright (C) 1998, 1999, Glenn Randers-Pehrson\n",
|
||||
"\n | %s %s, Copyright (C) 1998, 1999, 2000 Glenn Randers-Pehrson\n",
|
||||
progname, PNGCRUSH_VERSION);
|
||||
fprintf(STDERR, " | This is a free, open-source program. Permission is\n");
|
||||
fprintf(STDERR, " | granted to everyone to use pngcrush without fee.\n");
|
||||
@@ -1004,7 +1014,7 @@ main(int argc, char *argv[])
|
||||
fprintf(STDERR,
|
||||
" | Copyright (C) 1996, 1997 Andreas Dilger,\n");
|
||||
fprintf(STDERR,
|
||||
" | Copyright (C) 1998, 1999, Glenn Randers-Pehrson,\n");
|
||||
" | Copyright (C) 1998, 1999, 2000 Glenn Randers-Pehrson,\n");
|
||||
fprintf(STDERR,
|
||||
" | and zlib version %s, Copyright (c) 1998,\n",
|
||||
ZLIB_VERSION);
|
||||
@@ -1531,6 +1541,7 @@ main(int argc, char *argv[])
|
||||
if(idat_length[best] == idat_length[0] && things_have_changed == 0
|
||||
&& best != final_method && nosave == 0)
|
||||
{
|
||||
struct stat stat_in, stat_out;
|
||||
/* just copy input to output */
|
||||
|
||||
if(verbose > 2)
|
||||
@@ -1542,6 +1553,7 @@ main(int argc, char *argv[])
|
||||
fprintf(STDERR, "Could not find input file %s\n", inname);
|
||||
return 1;
|
||||
}
|
||||
|
||||
number_of_open_files++;
|
||||
if ((fpout = FOPEN(outname, "wb")) == NULL)
|
||||
{
|
||||
@@ -1549,18 +1561,25 @@ main(int argc, char *argv[])
|
||||
FCLOSE(fpin);
|
||||
return 1;
|
||||
}
|
||||
|
||||
number_of_open_files++;
|
||||
if(verbose > 2)
|
||||
printf("copying input to output...");
|
||||
for(;;)
|
||||
|
||||
stat(inname, &stat_in);
|
||||
stat(outname, &stat_out);
|
||||
if(stat_in.st_ino != stat_out.st_ino)
|
||||
{
|
||||
png_size_t num_in;
|
||||
for(;;)
|
||||
{
|
||||
png_size_t num_in;
|
||||
|
||||
num_in = fread(buffer, 1, 1, fpin);
|
||||
if (!num_in)
|
||||
break;
|
||||
fwrite(buffer, 1, 1, fpout);
|
||||
num_in = fread(buffer, 1, 1, fpin);
|
||||
if (!num_in)
|
||||
break;
|
||||
fwrite(buffer, 1, 1, fpout);
|
||||
|
||||
}
|
||||
}
|
||||
if(verbose > 2)
|
||||
printf("copy complete.\n");
|
||||
@@ -1618,12 +1637,23 @@ main(int argc, char *argv[])
|
||||
number_of_open_files++;
|
||||
if(nosave == 0)
|
||||
{
|
||||
struct stat stat_in, stat_out;
|
||||
stat(inname, &stat_in);
|
||||
stat(outname, &stat_out);
|
||||
if(stat_in.st_ino == stat_out.st_ino)
|
||||
{
|
||||
fprintf(STDERR, "Cannot overwrite input file %s\n", inname);
|
||||
FCLOSE(fpin);
|
||||
return 1;
|
||||
}
|
||||
|
||||
if ((fpout = FOPEN(outname, "wb")) == NULL)
|
||||
{
|
||||
fprintf(STDERR, "Could not open output file %s\n", outname);
|
||||
FCLOSE(fpin);
|
||||
return 1;
|
||||
}
|
||||
|
||||
number_of_open_files++;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user