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.