仅更改图像的rgb值并转换回图像

uplii1fm  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(299)

我需要转换我的图像 .bmp or .jpgbyte[] ,更改某些值 rgb ,将其转换回图像,并看到一个差异-一些错误的像素对我的图像。
我试着把图像转换成 byte[] 改变它并转换回来,但通过改变随机值,我得到一个损坏的图像。
那么,如何只访问图像的可变值呢?
从这个开始,但不确定下一步要做什么:

File file = new File("image.jpg");
    BufferedImage bufferedImage = ImageIO.read(file);
    WritableRaster raster = bufferedImage.getRaster();
    DataBufferByte data = (DataBufferByte) raster.getDataBuffer();

   byte[] pixels = data.getData();

如果有任何帮助,我将不胜感激。

w8rqjzmb

w8rqjzmb1#

找到了解决办法。要将.bmp图像的regb值转换为需要更改的二进制向量,我应用了以下解决方案:

public String imageToVector(BufferedImage image) throws Exception {
        String vectorInString = "";
        for (int x = 0; x < image.getWidth(); x++) {
            for (int y = 0; y < image.getHeight(); y++) {
                Color color = new Color(image.getRGB(x, y), false);
            vectorInString = vectorInString.concat(decimalToBinary(color.getRed()));
            vectorInString = vectorInString.concat(decimalToBinary(color.getGreen())); 
            vectorInString = vectorInString.concat(decimalToBinary(color.getBlue())); 
            }
        }
        return vectorInString;
}

相关问题