Search code examples
javaimage-compression

Compress image without saving it -- in Java


Is there a way, in Java, to compute what the size of a compressed image will be w/o saving the image? (This will be used to determine the quality necessary to compress an image to a specific size.)

Something like this, but in Java instead of C#, and where the Stream can be a dead end.


Solution

  • Here's a simple implementation.

    public class LengthCounterOutputStream extends OutputStream{
    
        private int byteCounter = 0;
    
        @Override
        public void write(int b){
            byteCounter++;
        }
    
        @Override
        public void write(@NotNull byte[] b){
            this.write(b, 0, b.length);
        }
    
        @Override
        public void write(@NotNull byte[] b, int off, int len){
            byteCounter += len;
        }
    
        public int getByteCounter(){
            return byteCounter;
        }
    }