【问题标题】:Steganography (writing text into a png file) doesn't work? [closed]隐写术(将文本写入 png 文件)不起作用? [关闭]
【发布时间】:2012-01-03 11:58:56
【问题描述】:

我有一个将文本文件写入 png 文件的程序,但它不起作用 - 图像在解码时返回不正确的字符,有时图像无法正确显示。这是我的代码:

public static void readText(String text, int[] pixArr, BufferedImage im, File outFile)
throws FileNotFoundException, IOException{
    char[] txt = text.toCharArray(); //Changes text file to array of characters
    int[] eightBit=new int[8]; //stores binary representation of characters
    for (int i=0;i<txt.length;i++){
        int hey=txt[i];
        for (int a=0;a<8;a++){     //converting text to binary
            eightBit[a]=hey%2;
            hey=hey/2;
            }
        eightBit=reverseArray(eightBit);
        insertion(pixArr, eightBit);
        }
    BufferedImage norm = new BufferedImage(im.getWidth(), im.getHeight(),
                                   BufferedImage.TYPE_INT_ARGB);
    norm.getGraphics().drawImage(im, 0, 0, null);
    ImageIO.write(im, "png", outFile);
    }   

public static void insertion(int[] pixArr, int[]eightBit){
    for (int i=0;i<pixArr.length;i++){
        for (int a=0;a<eightBit.length;a++){
            int temp=pixArr[i];
            temp=temp/2;
            temp*=2;
            pixArr[i++]=eightBit[a]+temp;
            }
        }
    }

【问题讨论】:

  • 您希望我们调试您自己开发的隐写术代码吗?没有任何错误或可疑的线路或任何东西?通过。

标签: java steganography


【解决方案1】:

我认为你需要从你的代码中退后一步,看看你在哪里修改了哪些数据结构。

您声明一个数组eightBit 来跟踪一个字节的八位。那很整齐。 (它应该是一个子例程,以便您可以更轻松地对其进行调试。)但是您将输出结果输出到insertion(pixArr,eightBit)。按照insertion() 调用,您会看到每次调用都给它相同 pixArr 数组——并且没有机制写入不同 部分后续调用中的 pixArr 数组。

这个例程可以提供的最好的是写八位。

哪八位?最后八位。

但我从来没有看到 int pixArr[] 被传递回实际编写 png 的代码。

我强烈建议将这个问题分解成更小的部分并单独测试每个部分

【讨论】:

    【解决方案2】:

    这并不能完全回答您的问题,但是如果您将代码分开并使用有意义的变量名,您会发现代码更容易调试。这不是俄罗斯方块,你不必把所有东西都塞进尽可能小的空间:)

    我绝对同意 sarnold 的观点——你应该将你的问题分解成小的、不同的、可测试的子程序;这将帮助您识别代码中有效的部分以及无效的部分。

    【讨论】:

    • “这不是俄罗斯方块”,我喜欢这样。 :)
    猜你喜欢
    • 2013-04-13
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 2017-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多