gpt4 book ai didi

java - 从 DataBuffer 字节数组中获取 R G B 颜色

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:32:37 27 4
gpt4 key购买 nike

这几行代码检索图像所有像素的数组。

ImageInputStream is = ImageIO.createImageInputStream(f);
Iterator iter = ImageIO.getImageReaders(is);
ImageReader imageReader = (ImageReader) iter.next();
imageReader.setInput(is);
BufferedImage image = imageReader.read(0);
final byte[] a = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();

如何检索像素(例如 0,0)的实际 R G B channel ?

编辑我使用这个数组是因为可以更快地访问图像。这就是为什么我不使用高级 API 的方法,例如 getRGBgetSample...

最佳答案

假设 image.getType() == TYPE_INT_RGB 那么你有一个这样的数组:

R, G, B, R, G, B, R, G, B, ...

您可以通过以下方式访问像素 (x,y) 的值

int width = image.getWidth();

...

byte R = a[3*(x+y*width)];
byte G = a[1+3*(x+y*width)];
byte B = a[2+3*(x+y*width)];

还有其他几种图像类型需要考虑,您可以在 documentation 中阅读.

访问方法基本上保持不变,您只是有不同的颜色排序或一个额外的 alpha channel 。但是,对于这 4 个 channel 像素,您必须将像素 (x,y) 的第一个 channel 的公式调整为

byte A = a[4*(x+y*width)];

关于java - 从 DataBuffer 字节数组中获取 R G B 颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8262923/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com