В настоящее время я работаю над программным обеспечением для создания мозаики с открытым исходным кодом на c # ( Sourceforge Link ). Это программное обеспечение объединяет большое количество маленьких фотографий (плиток) в одно большое изображение.
Так как конечный размер изображения обычно составляет порядка 20k px на 15k px, я сохраняю только карту того, как расположить плитки в памяти. Чтобы создать окончательное изображение, я строю его по частям, а именно в полосе из 8 строк (можно и под любым другим числом).
В случае bmp эти данные можно легко сохранить по частям, сначала записав заголовок bmp, а затем добавив в этот файл данные ARGB.
Но полученные bmp слишком велики для дальнейшей обработки (например, передача их какой-либо компании, занимающейся печатью плакатов). Поэтому я хотел бы сохранить эти большие изображения в формате jpgs на моем жестком диске.
Проблема теперь в том, что, поскольку jpgs сжаты, запись данных в чанки кажется очень сложной (обычная функция Bitmap.Save () сначала загрузит полное изображение в память и поэтому неприменима), так как запись в чистом виде, несжатые данные RGB этого не сделают.
Базовая функциональность написания jpgs в партии должна существовать, поскольку, насколько мне известно, алгоритм сжатия jpg работает с кусками или 8x8 пикселей.
Я искал несколько библиотек изображений (FreeImage, GraphicsMagick, LibTiff.NET), чтобы найти решения этой проблемы, но не смог найти ни одной. LibTiff в основном имеет желаемую функциональность, но только для формата изображений TIFF.
Большое спасибо за вашу помощь!
Max