В моей программе есть функция экспорта приветственного изображения рабочего холста на диск. Пользователи часто будут пытаться экспортировать изображения размером около 20 000 x 10 000 пикселей при 32bpp, что равно примерно 800 МБ. Добавьте это к серьезному потреблению памяти, которое уже происходит в вашей средней программе 3D CAD, и вы в значительной степени гарантируете потерю памяти на 32-битных платформах.Создание огромных изображений
Итак, теперь я экспортирую плитки размером 1000х1000 пикселей, которые пользователь должен сшить вместе в редакторе пикселей. Есть ли способ решить эту проблему, если пользователь не выполняет какую-либо работу?
Я понял, что могу написать небольшой exe, который получает команду в процессе и автоматически выполняет сшивание. Это будет отдельный процесс, и, таким образом, он будет иметь 2 ГБ оперативной памяти для себя. Или еще лучше? Я хотел бы поддерживать jpg, png и bmp, поэтому запись изображения в качестве байтового потока на диск на самом деле невозможна.
Спасибо, Пекка, я проверю составную функцию. Я не смогу отправить ImageMagick своим установщиком, поэтому прямое использование их функции не будет. –
@ Давид, пожалуйста. Но если вы не можете отправлять даже внешние DLL-файлы, вам обязательно придется сворачивать свое собственное интеллектуальное решение для сшивания/замены, что, конечно же, невозможно, но орех взломать! Я уверен, что есть сшиватели с открытым исходным кодом с хорошим исходным кодом, чтобы получить хотя бы вдохновение. –
Я написал небольшое консольное приложение, которое автоматически запускается. Это не занимало слишком много времени, но по-прежнему ограничено 2 ГБ несжатых данных изображения на 32-битных ОС. Тем не менее, я думаю, что это должно быть хорошо для большинства применений. –