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