gpt4 book ai didi

java - BufferedImage 中 channel 的顺序?

转载 作者:行者123 更新时间:2023-12-01 15:55:24 25 4
gpt4 key购买 nike

如何找出 BufferedImage 中颜色 channel 的顺序(不同类型,包括 Alpha channel )?

我需要知道 LookupOp(ByteLookupTable(int, byte[][]) 中 byte[][] 的顺序)或 RescaleOp(float[], float[ ],提示)。

是否有一种通用方法可以从给定的 BufferedImage 中查找顺序?我认为它应该在 ColorModel 中,但我找不到它。

我使用过像 if (t == BufferedImage.TYPE_INT_ARGB) 这样的代码,但一定有更好的方法,对吧?

最佳答案

我认为您正在寻找的内容分为 SampleModelColorModel

SampleModel 描述了数据的组织方式,它允许您获取一个或多个像素的数据。 (您可以通过调用 bi.getData().getSampleModel(), 获取 SampleModel,其中 bi 是 BufferedImage)。

ColorModel 然后提供方法(getAlphagetRedgetGreenGetBlue )用于从像素获取 ARGB 分量。

附录:

我认为你使用它的方式是:

    BufferedImage bi = ...;
Raster r = bi.getData();
// Use the sample model to get the pixel
SampleModel sm = r.getSampleModel();
Object pixel = sm.getPixel(0, 0, (int[])null, r.getDataBuffer());
// Use the color model to get the red value from the pixel
ColorModel cm = bi.getColorModel();
int red = cm.getRed(pixel[0]);

这看起来对于处理您可能遇到的任何颜色/样本模型都非常灵活,但我无法想象性能会很出色。我可能会使用这种与模型无关的方法将图像转换为 TYPE_INT_ARGB ,其中布局有详细记录,然后直接操作数据。然后,如有必要,将其转换回原始形式。

关于java - BufferedImage 中 channel 的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5170321/

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