Вот проблема. У меня есть большой набор пикселов JPEG размером 512x512 пикселей в качестве обычных файлов jpg.
Я написал часть программного обеспечения, которое делает кучу вещей, и вам нужно сшить все эти файлы в один огромный JPEG в конце.
Прежде всего, я НЕ хочу использовать ImageMagick для этого, но выполняю его внутри своего программного обеспечения!
В Delphi невозможно скопировать файл JPG на другой холст JPG, поэтому сначала необходимо создать TBitmap, затем фрагменты будут скопированы на холст TBitmap, а затем TBitmap будет преобразован в jpeg-изображение и сохранен в файл.
Проблема возникает, когда результирующие размеры файла слишком велики (например, 20 000 x 20 000 пикселей). Когда я вызываю TBitmap.SetSize, я, естественно, получаю ошибку (вне памяти или что-то вроде этого).
Я сделал несколько тестов с помощью Photoshop на той же машине и смог создать сложный (не пустой) файл размером 30 000 x 30 000 и сохранить его в формате JPEG.
Итак, вопрос в том, как я могу выполнить одно и то же? Fing какой-то способ сшить все эти JPEGS, написав результат непосредственно на диск или использовать какой-то другой трюк?...
Несмотря на то, что 20k x 20k пикселей кажутся достаточно большими, это значение применимо только к моей машине (4 ГБ оперативной памяти), поэтому меньшее количество RAM будет еще более ограничено программным обеспечением!
Спасибо
Изменить: уточнить:
Я бы хотел найти способ сшивания этих маленьких изображений JPG и написать большой, не сохраняя большое изображение в ОЗУ. По-видимому, чтение/запись потока битмапа возможно непосредственно на диске (не уверен), но это приведет к ОЧЕНЬ большому файлу. Таким образом, если формат JPG не позволяет этого делать, любой другой сжатый формат, такой как TIFF или PNG, будет делать. Я также хотел бы избежать слишком много рекомпрессии, чтобы не потерять (уже сжатое) начальное качество JPG.
Следовательно, идеальным решением было бы прямое чтение небольших файлов и запись в большой. Размеры плиток - 256x256 или 512x512, если это поможет в некоторых настройках сжатия JPEG.