PDA

View Full Version : Codifica Immagine in Java


skrano
20-06-2009, 20:54
Buonasera a tutti!
Mi chiamo Francesco, sono uno studente di un istituto tecnico industriale al 5° anno alle prese con la tesi di maturità...
Ho sviluppato la mia tesi sulla Steganografia e le tecniche di information hiding e vorrei implementare un programma in Java che appunto steganografi un file all'interno di un'immagine.
Il mio problema è il seguente:
Devo convertire in bit l'immagine che inserisco in input in modo tale da poter operare sul bit meno significativo di ogni byte. per facilitarmi nel compito di verifica della codifica metto il tutto all'interno di un file di testo per la mia lettura " rapida " dopo averlo eseguito..
Solo che........ Vengono copiati i primi 2 byte di un'immagine senza codificarla tutta!
Ho provato a ragionarci con "carta e penna" per capire come operare... solo che sto innervosendo "inutilmente" a cercare metodi diversi..
Qualcuno sa come fare?
mi servirebbe "solamente" la parte di codifica in binario.. ho provato a cercare su internet ma ho trovato ben poco...
Il mio compagno di classe mi ha suggerito questo forum visto che è stato pienamente aiutato pochi giorni fa! Sono fiducioso di voi!
E... Grazie per il tempo che mi avete dedicato!!

wisher
21-06-2009, 09:58
Puoi postare il codice che hai scritto?

skrano
21-06-2009, 11:12
FileInputStream immagine= new FileInputStream("pic.gif");
FileOutputStream file= new FileOutputStream("file.txt");
int c;
while(( c= immagine.read())!= -1)
{

file.write(c);

}
file.close();

immagine.close();



Cio che ora mi esce fuori è questo.... :S



GIF89a+ 0 ÷ 





 !!!"""###$$$&&&'''((()))***+++,,,---...///111222333444555666777888999:::;;;<<<===>>>???@@@BBBCCCDDDEEEFFFGGGHHHIIIJJJKKKLLLMMMNNNPPPQQQTTTUUUVVVWWWXXXYYYZZZ[[[\\\]]]^^^___```aaacccdddeeefffggghhhiiijjjkkklllmmmnnnooopppqqqrrrssstttuuuvvvwwwxxxyyyzzz{{{|||}}}~~~���‚‚‚ƒƒƒ„„„………†††‡‡‡ˆˆˆ‰‰‰ŠŠŠ‹‹‹���ŽŽŽ������‘‘‘“““”””•••–––———˜˜˜™™™ššš›››œœœ���žžžŸŸŸ***¡¡¡¢¢¢£££¤¤¤¥¥¥¦¦¦§§§¨¨¨©©©ªªª«««¬¬¬***®®®¯¯¯°°°±±±²²²³³³´´´µµµ¶¶¶···¸¸¸¹¹¹ººº»»»¼¼¼½½½¾¾¾¿¿¿ÀÀÀÁÁÁÂÂÂÃÃÃÄÄÄÅÅÅÆÆÆÇÇÇÈÈÈÉÉÉÊÊÊËËËÌÌÌÍÍÍÎÎÎÏÏÏÐÐÐÑÑÑÒÒÒÓÓÓÔÔÔÕÕÕÖÖÖ×××ØØØÙÙÙÚÚÚÛÛÛÜÜÜÝÝÝÞÞÞßßßàààáááâââãããäääåååæææçççèèèéééêêêëëëìììíííïïïðððñññòòòóóóôôôõõõ÷÷÷øøøùùùûûûüüüýýýþþþÿÿÿ2 2 2 2 2 2 2 2 2 K K K K K , + 0 Gÿ H°*Áƒ*DxÀQ5L ä ’�…fj%âPÜfÑx*O)e˜dTˆÈ«eŲè8¡`åJ_„Ù’åÇ
›@š*T
PУA)œÙ(šj…’|¹�4¡‰7[<,¬`g˜ @´á. ¥¨mVÈ€ ”Ì;e£ªA$Æù*`*fÁtÍ‘`÷I-@v޹23Æ„]*
V<žL¹2FèÁƒ!�„ êXBs¢²@câ-\Q
ØÊu8µ X«†€‚6Æ}Rt@ -dÔT-
€ÔPÉ @Ð 2ÂÔ`øQUÍbmÑ «?�ÚHÿq*…·i�Dn#Ff
3ÛxUúÂÜôT±ZMYQó<Á*,pâÈ/ÈLÒDþ
A ËЂ‡.º@òF &´AT¨á†Ú„Á 8XáB!ÜVá‹ô²J<…� Hgø
žG�5±L‘ƒA0R’U¦ .’˜wÐ N4¢Æl”ùQF] á‹Mîñ”" �A5X³H ”IÒÊH œð
3Vô€%îbâc‘Øò XpcÍ$I €ÊpR…oÚ‚.‚ðQ ‚›0#F
�øP 4PÊ3Œ\QUñ0Œ*Ö¤ÒÅ4
RÌáÄ*É4‘ànØ�L4ÄH„"GW��À†y”ÓÌ0�P1‡*V@X…kP# #l©Â/ÆL3Ìç0@Îܲ…ù@Ɔ\ñe'(Cà']PÐá fàòK.�¬ñB‡©Œ’,*“
B‚ ¬³q¤°aD4D“„"K�
” g@Û0A5ñÅ !þ½**Modified image**

Copyright by White Wolf Game Studios

Originally appeared: http://www.white-wolf.com/

Modifications: Greyscale, size change, removed animation
Modified by: Abe Dashiell !ÿ MACGCon 6 Written by GIFConverter 2.4d18 of October 12, 1996 ;

wisher
21-06-2009, 11:23
Il tuo problema è che così facendo non decodifichi il formato GIF.

Prova a vedere se queste classi possono esserti utili:
http://java.sun.com/j2se/1.5.0/docs/guide/imageio/index.html
Con ImageIO.Read ottieni una bufferedImage da un file da cui con getRGB puoi ottenere le componenti dei singoli colori come RGB.
http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/ImageIO.html#read(java.io.File)
http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/BufferedImage.html#getRGB(int, int, int, int, int[], int, int)

Usando setRGB puoi modificare il pixel che ti serve e poi puoi riscrivere l'immagine.

skrano
21-06-2009, 11:40
Proverò a lavorarci su usando queste classi..
Grazie!
Vedremo cosa esce dal tutto! ;)