У меня есть BufferedImage, который я получаю, у которого есть IndexColorModel. Затем я хочу применить AffineTransform с AffineTransformOP для создания преобразованной версии displayImage.
Вот фрагмент кода:
int type = isRGB() ? AffineTransformOp.TYPE_BILINEAR : AffineTransformOp.TYPE_NEAREST_NEIGHBOR;
AffineTransformOp op = new AffineTransformOp(atx, type);
displayImage = op.filter(displayImage, null);
Я запускаю это со многими изображениями, и из более раннего поста я обнаружил, что если я установил тип преобразования на билинейный, то у меня не хватило памяти, потому что я возвращал изображение с DirectColorModel. Однако эта DirectColorModel имела правильный альфа-канал (когда я нарисовал изображение на зеленом фоне после его перевода, я мог видеть зеленый цвет вокруг всего изображения). Когда я устанавливаю тип интерполяции для ближайшего соседа, пиксели над и слева от изображения становятся черными независимо от фона. Я предполагаю, что это означает, что альфа не устанавливается.
Может кто-нибудь сказать мне, как правильно установить альфа-канал с помощью IndexColorModel или изменить параметры AffineTransformOP таким образом, чтобы я получал IndexColorModel с правильной альфа-версией?
Спасибо !!
EDIT:
Вот желаемый эффект, с AffineTransformOp.TYPE_BINLINEAR
:
Вот эффект, который я вижу с AffineTransformOp.TYPE_NEAREST_NEIGHBOR
:
Весь фон изначально закрашен зеленым для эффекта, и в обоих случаях изображение рисуется в позиции (0, 0).