Если нет способа сделать это встроенным в Java (ради вас, я надеюсь, что это не так, и кто-то ответит на это так), то вам нужно будет реализовать алгоритм самостоятельно, как это прокомментировали другие, говоря:итак.
Вам не обязательно понимать весь алгоритм самостоятельно.Если вы используете ранее существовавший алгоритм, вы можете просто изменить его, чтобы загрузить файл в виде потока байтов, создать буфер байтов для продолжения чтения фрагментов файла и изменить алгоритм так, чтобы он принимал эти данные одновременно.
Некоторые алгоритмы, такие как jpg, могут быть невозможны для реализации с линейным потоком фрагментов файла таким образом.Как предположил @warren, bmp, вероятно, проще всего реализовать таким способом, поскольку этот формат файла имеет заголовок, состоящий из такого количества байтов, что он просто выводит данные RGBA прямо в двоичном формате (вместе с некоторыми отступами).Так что, если вы должны были загрузить свои подизображения, которые должны быть объединены, загружать их логически по 1 за раз (хотя вы могли бы на самом деле многопоточность этой вещи и загружать следующие данные одновременно, чтобы ускорить это, поскольку этот процесс будет выполнятьсядолгое время), читая следующую строку данных, сохраняя ее в свой двоичный выходной поток и т. д.
Возможно, вам даже придется загружать подизображения несколько раз.Например, представьте себе сохраняемое изображение, состоящее из 4 подизображений в сетке 2x2.Вам может понадобиться загрузить изображение 1, прочитать его первую строку данных, сохранить его в новый файл, выпустить изображение 1, загрузить изображение 2, прочитать его первую строку данных, сохранить, выпустить 2, загрузить 1, чтобы прочитать его вторую строкуданные и тд.Скорее всего, вам понадобится сделать это, если вы используете сжатый формат изображения для сохранения в.
Чтобы снова предложить bmp, поскольку bmp не сжимается, и вы можете просто сохранить данные в любом формате, который хотите(при условии, что файл был открыт способом, обеспечивающим произвольный доступ), вы можете пропустить файл, который вы сохраняете, чтобы полностью прочитать 1 фрагмент изображения и сохранить все его данные, прежде чем переходить к следующему.Это может обеспечить экономию времени выполнения, но может также обеспечить ужасные размеры сохраненных файлов.
И я мог бы продолжить.Вероятно, будет несколько ловушек, оптимизаций и т. Д.
Вместо сохранения 1 огромного файла, который является результатом объединения других файлов, что делать, если вы создали новый формат файла изображения, который был просто составлен изметаданные, позволяющие ссылаться на другие файлы таким образом, чтобы логически объединять их, фактически не создавая 1 массивный файл?Возможность выбора нового формата файла изображения зависит от вашего программного обеспечения;если вы ожидаете, что люди будут использовать эти изображения для использования в другом программном обеспечении, то это не сработает - по крайней мере, если вы не сможете получить новый формат файла изображения, который станет популярным и станет стандартным.