java - 仅更改图像的 rgb 值并转换回图像
问题描述
我需要将我的图像转换.bmp or .jpg
为byte[]
,更改一些值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();
将不胜感激任何帮助。
解决方案
找到了解决方案。要将 .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;
}
推荐阅读
- reactjs - 从 api 端点在 next-i18next 中加载 i18n 资源,不会触发 http 请求
- javascript - 在javascript中将所有其他字母转换为大写和小写
- typescript - 从对象类型创建键/值类型
- python - Python:使用元数据创建虚拟音频文件
- python - 处理 pandas DataFrame 的子类时,Sphinx 给出 numpydoc 错误
- mongodb - 我收到此错误即将派生子进程,等待服务器准备好连接
- flutter - 如何在颤振中连接到 TCP 套接字(不是 Web 套接字)?
- node.js - 命令在使用 -it 和 bash 运行时有效,但不适用于 Docker 内的 CMD
- php - 如何在 laravel 中使用 groupBy 获取最后一条记录?
- google-sheets - 在范围内绘制多个随机数