我正在尝试使用类型的底层DataBufferByte
来尽可能快地设置像素值。BufferedImage
TYPE_3BYTE_BGR
也许我不理解,但是当我执行以下操作时...
byte[] imgBytes = ((DataBufferByte) img.getData().getDataBuffer()).getData();
...似乎我得到了 byte[] 的副本而不是参考。例如,如果我运行...
System.out.println(System.identityHashCode(imgBytes));
System.out.println(System.identityHashCode((DataBufferByte) img.getData().getDataBuffer()).getData());
...我得到两个明显不同的对象哈希。如果我没记错的话,这表明我没有得到对底层 byte[] 的引用,而是一个副本。如果是这种情况,我应该如何DataBufferByte
直接编辑???
或者我只是设置错误的像素......当我在 imgBytes 中设置像素时,它似乎对 BufferedImage 没有任何作用。一旦我得到字节 [],我将每个像素值设置如下:
imgBytes[intOffset] = byteBlue;
imgBytes[intOffset+1] = byteGreen;
imgBytes[intOffset+2] = byteRed;
对我来说,这一切似乎都很好。我可以通过这种方式很好地读取像素,所以看起来我应该能够以相同的方式编写它们!