Inizialmente l' estrazione del messaggio avveniva dall' immagine in formato numerico(array di pixel) e così funzionava perfettamente.

Il codice di estrazione è del tutto simile all' inserimento, con gli operatori bit a bit.

Comunque per verificare quale fosse l' origine del problema ho fatto stampare a video il valore numerico del pixel (un intero tipo -59542636) dell' immagine modificata (proprio all' uscita dall' estrazione, prima di creare e salvare l' immagine modificata) e anche il corrispondente valore dell' immagine originale.
Con un po' di buona volontà mi sono scritto quei valori in binario ( )proprio per un pixel che corrispondeva ad un carattere sbagliato (se non ricordo male estraeva una m invece di una a).
Da queste analisi modello Informatica I ho verificato che tutti i bit dei due pixel (originale e modificata) coincidevano tranne gli ultimi due di ogni ottetto/byte (come da specifica)e unendo i due bit meno significativi di ciascuno dei quattro byte associati al pixel si otteneva la a (il carattere corretto) e non la m ( quello estratto,sbagliato).

Da queste prove sono arrivato alla conclusione, o meglio ad ipotizzare che non ci siano problemi in inserimento/estrazione ma in fasi successive.

Per quanto riguarda la decodifica dell' immagine il codice è lo stesso che "apre" l' immagine originale (in parte postato nel primo messaggio), solo che invece di lanciare la procedura che inserisce il messaggio lancia quella che lo estrae.