尝试使用bufferedImages故意破坏图像

问题描述 投票:0回答:1

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

        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。不介意它是否更加混乱。)

java image corruption
1个回答
-1
投票

你应该使用“png”格式

© www.soinside.com 2019 - 2024. All rights reserved.