Java 使用字节数组设置BuffereImage的像素颜色
我已使用以下代码将图像转换为数组:Java 使用字节数组设置BuffereImage的像素颜色,java,bufferedimage,bytebuffer,Java,Bufferedimage,Bytebuffer,我已使用以下代码将图像转换为数组: BufferedImage bufferedImage = null; try { bufferedImage = ImageIO.read(new File("name.jpeg")); } catch (IOException e) { } byte[] b = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData(); 阵列中每个像素包含3个字节。
BufferedImage bufferedImage = null;
try {
bufferedImage = ImageIO.read(new File("name.jpeg"));
} catch (IOException e) { }
byte[] b = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
阵列中每个像素包含3个字节。我的问题是如何将单个像素设置为白色,因为问题是Java中的字节是有符号的,因此只允许-128和127之间的值。但是我想把我的像素设置为255,255,255。如果将所有三个值都设置为127,像素将变为灰色。将值设置为
-1
,这是无符号255
字节的最大值
或者,如果您想使代码更明显,
(byte)255也可以使其工作。将值设置为-1
,这是无符号255
字节的最大值
或者,如果您想让代码更加清晰,那么(byte)255也可以让它工作。您还可以使用Java的内置功能来帮助管理此类内容。不确定您是否需要特定的byte[]
数组,但它是您可以利用的很酷的对象。您也可以使用Java的内置功能来帮助管理此类内容。不确定您是否需要一个byte[]
数组,但这是一个很酷的对象,您可以利用它。ManHow没有看到这一点。我试着用-1,但没有注意到它实际上变成了白色。我现在觉得自己很愚蠢。。。谢谢:)我怎么没看到。我试着用-1,但没有注意到它实际上变成了白色。我现在觉得自己很愚蠢。。。谢谢:)是的,我需要字节数组,因为我正在尝试实现一些低级过滤器,并且需要能够操作每个像素。buffereImage
不适用于ByteBuffers
(或者至少在我上次选中时不适用)。DataBuffer
类是一个完全不同的品种。@Kayaman他们现在很幸运:-)如果您愿意,您可以单独循环每个字节并对其应用逻辑,但似乎您已经在-1中找到了一个很好的答案:-)我在JDK 8中没有看到任何对ByteBuffer
的引用。一直以来都是光栅和数据缓冲。我相信ByteBuffer就是在jdk 7中引入的。不过它是用jdk 8编译的。我相信我已经使用JDK1.8.102测试了使用ByteBuffer和BuffereImage的代码,我没有遇到任何问题。我可以pm你的代码,这样你可以看一看,如果你愿意的话,这样我们就不会把注释弄得乱七八糟。我需要字节数组,因为我正在尝试实现一些低级过滤器,需要能够处理每个像素。BufferedImage
不适用于ByteBuffers
(或者至少在我上次检查时不适用)。DataBuffer
类是一个完全不同的品种。@Kayaman他们现在很幸运:-)如果您愿意,您可以单独循环每个字节并对其应用逻辑,但似乎您已经在-1中找到了一个很好的答案:-)我在JDK 8中没有看到任何对ByteBuffer
的引用。一直以来都是光栅和数据缓冲。我相信ByteBuffer就是在jdk 7中引入的。不过它是用jdk 8编译的。我相信我已经使用JDK1.8.102测试了使用ByteBuffer和BuffereImage的代码,我没有遇到任何问题。我可以pm你的代码,这样你可以看看,如果你愿意,这样我们就不会混乱的评论