Je travaille avec Via Builder, de Inscriber Technology. Cette application fusionne une animation de séquence TGA en un seul fichier .via, ce qui rend beaucoup mieux le chargement de grandes séquences, car ce fichier est optimisé. Il existe des plugins pour l'utiliser avec certains produits Adobe.Inscriber Technology Via Builder et Delphi - Support du canal Alpha
Je travaille sur Delphi, et mon problème est que je ne peux pas récupérer le canal alpha d'origine à partir des images. Grâce à leur bibliothèque VIACODECLib_TLB, j'ai la fonction suivante:
function GetFrameBitmap(Frame: Integer): Integer;
de tha interface IViaFile. Cette fonction est supposée renvoyer un handle à une image bitmap d'image de la séquence d'origine. Le code suivant pourrait fonctionner:
viaObject: IViaFile;
bmp: TBitmap;
index: Integer;
bmp.Handle := ViaObject.GetFrameBitmap(index);
Mais le bitmap résultant est la trame d'origine sans canal alpha. En fait, son canal alpha est nul pour toute l'image.
En supposant que je faisais quelque chose de mal, j'ai essayé d'utiliser la fonction GetDIBits, pour être sûr qu'il y avait un canal alpha quelque part. J'ai donc alloué de la mémoire assez longtemps pour stocker le bitmap en supposant qu'il avait 4 canaux et utilisé la fonction GetDIBits. J'ai obtenu le même résultat qu'auparavant: image normale, canal alpha zéro pour toute l'image. Il suffit de noter que Inscriber (dont les forums sont morts), affirme que son Via Builder a un support alpha complet. Je connais quelqu'un qui a réussi à charger les cadres correctement, en C++, en utilisant la fonction GetDIBits, mais "traduire" le code en Delphi n'a pas fonctionné.
Toute aide serait grandement appréciée.
Merci.
Salut, merci d'avoir répondu. J'ai oublié de mentionner que j'utilise une bibliothèque graphique supportant l'alpha blending (GR32). En utilisant le GetDIBits, je copie juste le tableau d'octets retourné par la fonction, et le résultat est l'image originale avec le canal alpha tout mis à zéro. Je vais regarder le code C++ à nouveau. Merci. – Rafael