尝试使用缓冲图像故意损坏图像



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

        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"));

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

输入图像和输出图像

我也做了一些研究,我发现如果我在十六进制编辑器中打开文件并随机更改值,它会给我想要的结果。也许我可以以某种方式在 java 中复制它?(所需图像。不介意它更混乱。

你应该使用"png"foramt

最新更新