首页 > 解决方案 > 仅更改图像的 rgb 值并转换回图像

问题描述

我需要将我的图像转换.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();

将不胜感激任何帮助。

标签: javaimageraster

解决方案


找到了解决方案。要将 .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;
}

推荐阅读