public static byte[] decodeImage(BufferedImage img) {
        //convert image to byte array
        byte[] bImg = getBytes(img);

        //offset definieren voor later
        int offset = 32;

        //retrieve lengths from the first bytes. 0-> 31 bits
        int length = 0;

        for (int i = 0; i < offset; i++) {
            //de lengte byte doorschuiven naar links en de laatste bit van de image byte op de eerste plaats zetten dmv OR
            //
            //0000 0000 0000 0000 0000 0000 0000 0000
            //0000 0000 0000 0000 0000 0000 0000 0000 = doorschuiven naar links
            //
            //                             [0001 0011 = image byte i]
            //                             [0000 0001               ]
            //                              --------- & = AND
            //                              0000 0001 = laatste bit
            //
            //--------------------------------------- | = OR tussen doogeschoven lengte en laatste bit
            //0000 0000 0000 0000 0000 0000 0000 0001
            length = (length << 1) | bImg[i] & 1;
        }

        //byte array aanmaken voor de tekst nu we de lengte weten
        byte[] bMsg = new byte[length];

        //elke byte van de tekst loopen om de laatste bits  op de halen van de tekst
        for (int i = 0; i < bMsg.length; i++) {
            //8 keer de laatste bit ophalen van de byte van de foto om zo de tekst byte op te bouwen
            for (int bit = 0; bit < 8; ++bit, ++offset) {
                //zelfde principe als de lengte
                bMsg[i] = (byte) ((bMsg[i] << 1) | (bImg[offset] & 1));
            }
            
            if (DEBUG) {
                ConsoleHelper.append("\t" + "value byte " + i + ": " + Integer.toBinaryString(bMsg[i]));
            }
        }

        //converteer message byte array naar string
        return bMsg;
    }