Я написал картографическую программу в Delphi, где пользователь может загрузить растровое изображение в фоновом режиме, которое я сохраняю в памяти. В одном случае пользователь успешно загрузил 44-мегабайтный BMP, но программа работала вяло, и когда он печатал (я разбиваю вывод на плитку), он получал ошибку «Недостаточно ресурсов». Я преобразовал BMP в PNG (3 МБ), и программа работает намного лучше, а задание на печать выполнено успешно.
Поскольку в любом случае PNG необходимо расширить до DIB того же размера, почему существует разница в производительности/ресурсах? Во всяком случае, для загрузки PNG потребуется больше работы и выделения памяти. Что мне не хватает?
Поскольку, похоже, нет очевидных ответов, я напишу небольшой демонстрационный проект, чтобы продолжить исследование.