Я хотел бы объединить (сложить) ~ 100 BufferedImages из видео в одну картинку. Самый быстрый способ, которым я знаю, это сделать
- Нарисуйте рамку # 1 со 100% альфа в качестве базового изображения
- Нарисуйте кадр № 2 с 50% альфа (создание стека с равным сочетанием 2 источников)
- Нарисуйте кадр № 3 с 33% альфа
Продолжить с альфа 1 / frameNumber ...
g2d.composite = AlphaComposite.SrcOver.derive(1.0f / imageCount)
g2d.drawImage(img, 0, 0, null)
Но это выглядит ужасно: серый пестрый беспорядок.
Но , если я делаю вещи вручную (извлекаю значения пикселей в целые числа, суммирую их, делю на 100, складываю обратно в BufferedImage) - это выглядит великолепно! Хорошие плавно смешанные изображения. Но очень медленно.
Есть идеи, почему использование "правильного" способа выглядит так плохо, и если его можно сделать так, чтобы оно выглядело так же хорошо, как и хакерский?