簡體   English   中英

圖像隱寫術Java

[英]Image Steganography 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();
    }

如果我犯任何錯誤或缺少此代碼,請通知我。

String.concat不會更改您調用它的字符串,而是返回一個新字符串。 因此,如果改用myString = myString.concat(...) ,則可能會得到更好的結果。 如果tempText包含字符代碼,則可以將其tempText轉換為char(因為String.valueOf返回int的字符串表示形式):

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

代替:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM