Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


#26 pngcrush manual does not properly explain some switches


Use of -already switch is not clearly explained. In particular, how do you expect users to know the size of IDAT chunk?

Use of -double_gamma switch is not clearly explained. Does the fix remove extra gamma information, merge the information, or change the information?

Use of -iccp switch is unclear. What are the 'length' and '"Profile Name"' parameters do, and how should I use the parameters, especially when the 'proper' values for the parameters are unknown to users? I entered random values but the output file is same as input.

Documentation of -l switch does not mention compression ratio of the values. Do I get higher compression ratio with -1 or -9?

-m switch is confusing, both in documentation and syntax. First of all, if I am expected to use a specific combination of filter, compression level, and strategy via -m switch, then the switch should accept a set of 3 values to make it easier to use. In addition, pngcrush's way to define -m method is inconsistent: method 1 uses filter 0, compression level 4, and strategy 0;
method 2 uses filter 1, compression level 4, and strategy 0; but method 3 uses method 3 uses filter 5, compression level 4, and strategy 1. This way to encode methods is overly complicated, so such syntax should be deprecated and be replaced with a multi-value switch.

Use of -max switch is not explained, and the purpose of (defining) IDAT chunk is not explained.

Use of -q switch is not clearly explained. Manual should at least states it suppresses text output during compression.

Documentation of -replace_gamma has awkward grammar. It should state following:

This switch replaces the gamma information of the image, stored in gAMA chunk, if present. The value can either be a floating point value, or an integer. If integer gamma value is entered, actual gamma value is derived by dividing the switch value by 1000000.

Documentation does not explain the kind of 'rendering intent' the -srgb switch introduces.

-trns does not explain the use of tRNS chunk. Use of tRNS chunk should be documented.

What is the extra information offered by -v switch? It should be properly documented as follows:

-v switch reports following activities:

chunk reading with length of each input chunk. When IHDR is first read, pngcrush returns header information, including Width, height, Bit depth, Color type, Interlace, and palette if exist.

-v -v switch reports all of the above, plus following:

file opening
pointer allocations and deallocations
io initializations
structure initialization
structure creation
structure writing
rowbuf allocation

-zmem command is not properly explained. How does the switch different from -l and -w switches, and how much compression memory does each -zmem setting use?


  • Logged In: YES
    Originator: NO