我有一个带有 IndexColorModel 的 BufferedImage。然后我希望使用 AffineTransformOP 应用 AffineTransform 以创建 displayImage 的转换版本。
这是一个代码片段:
int type = isRGB() ? AffineTransformOp.TYPE_BILINEAR : AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
AffineTransformOp op = new AffineTransformOp(atx, type);
displayImage = op.filter(displayImage, null);
我用很多图像运行它,从之前的一篇文章中我发现如果我将变换类型设置为双线性,那么我的内存就会用完,因为我用 DirectColorModel 取回了一个图像。但是,这个 DirectColorModel 有一个正确的 alpha 通道(当我在翻译后将图像绘制为绿色背景时,我可以在整个图像周围看到绿色)。当我将插值类型设置为最近邻时,无论背景是什么,图像上方和左侧的像素都会显示为黑色。我假设这意味着 alpha 没有设置。
谁能告诉我如何使用 IndexColorModel 正确设置 alpha 通道,或更改 AffineTransformOP 参数以便我获得具有正确 alpha 的 IndexColorModel?
谢谢!!
编辑:这是所需的效果,具有AffineTransformOp.TYPE_BINLINEAR
:
这是我看到的效果AffineTransformOp.TYPE_NEAREST_NEIGHBOR
:
整个背景最初被涂成绿色以获得效果,并且在这两种情况下,图像都绘制在位置 (0, 0)。