Я пытаюсь создать мозаику изображений на Java. Я вычисляю размер нового изображения, которое я создаю, и затем для каждого подизображения, которое будет частью мозаики, я делаю вызов рисования.
В псевдокоде:
create buffered image big enough to hold entire mosaic
create Graphics2D context from that image
for each buffered subimage that will be a part of the mosaic
draw the subimage on the graphics context of big bufferedimage
g2.drawImage(myImage, x,y,width,height,null,null)
Есть ли лучший способ сделать это? Я надеюсь, что есть какая-то операция прямого копирования, так как я не хочу преобразовывать или масштабировать изображения в более крупное изображение. Что-то похожее на массив копий растров каждого подизображения. Я заметил, что есть метод setData, который принимает объект Raster, но метод отмечает, что Raster должен находиться в том же координатном пространстве.
Есть мысли? Это немного узкое место в моей программе, и я бы хотел, чтобы это было как можно быстрее.
EDIT:
Оказывается, я ошибался (как это часто бывает, когда делаются предположения без точных данных) о том, где было узкое место. У меня была ошибка, когда многократные 3-мегабайтные изображения читались снова и снова, а не в уменьшенных версиях изображений, кэшированных в памяти. Мое время работы увеличилось с 50 минут до 15 секунд, когда я сделал исправление.