我正试图故意破坏输入图像。
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中复制它? (desired image。不介意它是否更加混乱。)
答案 0 :(得分:-1)
您应该改用“ png”孔