2013-01-20 37 views
-1

我想解碼圖像中編碼的數據。編碼工作正常,圖像的數據大小也會改變,但由於某種原因,解碼數據是空字符串。編碼數據丟失或者這個代碼有一些錯誤。圖像隱寫Java

int temp,tempText=0,x=0,p=0; 

    try 
    { 
     image= ImageIO.read(new File("C:\\Users\\Desktop\\Encoded.png")); 

    } 
    catch (IOException e) 
    { 
     e.printStackTrace(); 
    } 


    for(int i=0;i<image.getWidth();i++) 
    { 
     for(int j=0;j<image.getHeight();j++) 
     { 
      pixels[i][j]=image.getRGB(i, j); 
     } 
    } 

    for(int i=0;i<Width;i++) 
    { 
     for(int j=0;j<Height;j++) 
     { 
      temp=pixels[i][j]; 

      int change=0; 

      for(int k=0;k<4;k++) // 4 iterations for 4bytes of every pixel 
      { 
       if(k==0) 
       { 
        change=1; 
       } 
       else 
        if(k==1) 
        { 
         change=256; 
        } 
        else 
         if(k==2) 
         { 
          change=65536; 
         } 
         else 
          if(k==3) 
          { 
           change = 16777216; 
          } 


       tempText=tempText | (pixels[i][j] & change); 

       p++; 

       if(p==8) // because character is of 8bits 
       { 
        myString.concat(String.valueOf(tempText));// Writing decoded data in string 
        p=0; 
        tempText=0; 

       } 
      } 


     } 

// Writing in file 

    try 
    { 
     file = new File("C:\\Users\\Desktop\\Retreive.txt"); 
     fw = new FileWriter(file); 

     bw= new BufferedWriter(fw); 

     bw.write(myString); 
     bw.close(); 

    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 

如果出現任何錯誤或者代碼缺失,請通知我。

+2

爲了更好地幫助越早,張貼[ SSCCE](http://sscce.org/)。 –

+0

你在哪裏初始化寬度和高度? –

+0

嘿,只需要清理我的手就可以了。所以你的algo LSB更換工作?和最後一個字符中的錯誤? –

回答

2

String.concat不會更改您調用它的字符串,而是會返回一個新字符串。所以如果你使用myString = myString.concat(...)來代替,你可能會得到更好的結果。如果tempText包含一個字符的代碼,你可以將它轉換爲一個char(因爲String.valueOf返回整數的字符串表示):

// Writing decoded data in string 
// myString = myString.concat(String.valueOf(tempText)); 
myString += (char) tempText; 

代替:

myString.concat(String.valueOf(tempText));// Writing decoded data in string 
+0

仍然沒有成功.. :(。我想給你發送整個代碼。你可以通過查看完整的程序得到一個更好的主意 – Alfred

+0

很抱歉聽到...你可以把你所有的代碼放在你的問題上面(或者使其它方式提供) –

+0

這裏是code的鏈接 – Alfred