In Linux etc. pngcrush can already output to /dev/stdout as the outfile.png ; it can even load /dev/stdin as the infile.png the first time it attempts to do so; the problem is that pngcrush attempts to load the same infile.png more than once, which fails when infile.png was streamed in from the previous process as /dev/stdin. A hack for Linux etc. would be in the source code to look for if the inname variable equals "/dev/stdin", write the stream to something like temp.png, then update the value...
In Linux etc. pngcrush can already output to /dev/stdout as the outfile.png ; it can even load /dev/stdin as the infile.png the first time it attempts to do so; the problem is that pngcrush attempts to load the same infile.png more than once, which fails when infile.png was streamed in from the previous process as /dev/stdin. A hack for Linux etc. would be in the source code to look for if the inname variable in equals "/dev/stdin", write the stream to something like temp.png, then update the value...