Я работаю с Via Builder, от Inscriber Technology. Это приложение объединяет анимацию последовательности TGA в один файл .via, что значительно упрощает загрузку больших последовательностей, так как этот файл оптимизирован. Существуют плагины для использования с некоторыми продуктами Adobe.
Я работаю над Delphi, и моя проблема в том, что я не могу вернуть исходный альфа-канал из фреймов. Используя их библиотеку VIACODECLib_TLB, у меня есть следующая функция:
function GetFrameBitmap(Frame: Integer): Integer;
из интерфейса IViaFile. Эта функция должна возвращать дескриптор растрового изображения кадра из исходной последовательности. Следующий код может работать:
viaObject: IViaFile;
bmp: TBitmap;
index: Integer;
bmp.Handle := ViaObject.GetFrameBitmap(index);
Но полученное растровое изображение - это оригинальный кадр без альфа-канала. На самом деле его альфа-канал равен нулю для всего изображения.
Предполагая, что я что-то делаю не так, я попытался использовать функцию GetDIBits, чтобы быть уверенным, что где-то есть альфа-канал. Поэтому я выделил достаточно памяти для хранения растрового изображения, предполагая, что в нем 4 канала, и использовал функцию GetDIBits. Я получил тот же результат, что и раньше: обычный кадр, нулевой альфа-канал для всего изображения.
Хочу отметить, что Inscriber (чьи форумы не работают) утверждает, что его Via Builder имеет полную альфа-поддержку. Я знаю человека, которому удалось правильно загрузить фреймы на C ++ с помощью функции GetDIBits, но «перевод» кода в Delphi не сработал.
Любая помощь будет высоко ценится.
Спасибо.