尝试使用bufferedImages故意破坏图像

时间:2019-03-31 19:13:06

标签: java image corruption

我正试图故意破坏输入图像。

        BufferedImage bImage = ImageIO.read(new File("input.jpg"));
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ImageIO.write(bImage, "jpg", bos);
        byte[] data = bos.toByteArray();

        for (int x = 0; x < bImage.getHeight(); x++) {
                int yesNo = (int) Math.round(Math.random());
                int r = (int) (Math.random() * 255);
                int g = (int) (Math.random() * 255);
                int b = (int) (Math.random() * 255);
                Color myColor = new Color(r, g, b);

                if (yesNo == 1) {
                    data[x] = (byte) myColor.getRGB();
                }
        }

        ByteArrayInputStream bis = new ByteArrayInputStream(data);
        BufferedImage bImage2 = ImageIO.read(bis);
        ImageIO.write(bImage2, "jpg", new File("output.jpg"));

当我将图像转换为字节数组并更改值时,有时会输出灰色像素而不是随机彩色像素。这是我的输入和输出(我的朋友建议的图像不是我)。

input imageoutput image

我也进行了一些研究,发现如果我在十六进制编辑器中打开文件并随机更改值,将得到我想要的结果。也许我可以以某种方式在Java中复制它? (desired image。不介意它是否更加混乱。)

1 个答案:

答案 0 :(得分:-1)

您应该改用“ png”孔