Внутреннее преобразование растрового изображения 24bpp в 32bpp - PullRequest
1 голос
/ 19 августа 2009

В Delphi 7 мне приходится иметь дело с довольно большими 24-битными растровыми изображениями (несколько 100 МБ). Поскольку я хочу использовать библиотеку Graphcis32 для дальнейшей обработки, их необходимо преобразовать в 32bpp (TBitmap32). Однако метод LoadFromFile в TBitmap32 создает временную обычную TBitmap для загрузки исходного 24-битного растрового изображения, которое затем назначается TBitmap32 для выполнения требуемого преобразования формата. Конечно, загрузка памяти примерно удваивается благодаря наличию в памяти двух этих огромных растровых изображений, и это может быть фатальным для моего приложения.

Я имею в виду способ загрузки растрового изображения 24 бит / с в заранее выделенный буфер, размер которого соответствует размеру растрового изображения 32 бит / с. Затем, начиная с конца буфера, я хочу переместить байты RGB в смещения необходимо для 32bpp.

Возможно ли это? Как я могу загрузить растровое изображение в предварительно выделенный буфер? Есть идеи?

1 Ответ

0 голосов
/ 19 августа 2009

Я не знаю, как работает Graphics32. Однако, если вы используете стандартный формат файла и имеете прямой доступ к пиксельным данным TBitmap32, вы сможете создать свой собственный загрузчик изображений для формата, который выполняет загрузку и преобразование с повышением до 32 bpp за один раз, если больше ничего не работает.

Спецификации для распространенных форматов файлов по всему Интернету, какой из них вы используете?

...