comment créer un gif animé dans .net
Personne ne sait comment créer un gif animé à l'aide de c#?
Idéalement, j'aimerais avoir un certain contrôle sur la réduction de la couleur utilisée.
Utilise imagemagick (externe a commencé le processus) le meilleur choix?
- imagemagick encore semble avoir les meilleures options (dithering, réduction de la couleur, etc). L'suggéré lib et autres méthode de création sont de très mauvaise qualité
- avez-vous essayé la solution finale? pas marqué de réponse...
Vous devez vous connecter pour publier un commentaire.
Il y a une construite dans .NET de la classe qui va encoder les fichiers GIF.
GifBitmapEncode MSDN
bmpImage.GetHbitmap()
dans le code donné. Comme MSDN notes, ce doit être désactivée manuellement. Ici un exemple de code sur la façon de faire que pour éviter que le GDI objet Bitmap de prendre trop de mémoire.Cette Animation Gif Créateur de code à partir de https://github.com/DataDink/Bumpkit pouvez régler le temps de Retard foreach Cadre:
Utilise .Net standard de Codage Gif et ajoute Animation les en-têtes.
MODIFIER: Fait le code similaire à un type de fichier de l'écrivain.
Vous pouvez également envisager d'utiliser ImageMagick.
Il y a deux .net des wrappers pour la bibliothèque répertoriés au http://www.imagemagick.org/script/api.php
Voici un exemple qui montre comment le faire en utilisant le Magick.net wrapper:
De savoir si ou de ne pas appeler imagemagick est le meilleur choix est un peu difficile à awnser sans connaître les paramètres de qualité qui sont importants. Certaines autres options:
Rick van den Bosch codearchive.org miroirceux-ci ont l'avantage que vous n'avez pas de dépendance sur un troisième partie de la bibliothèque qui pourrait ou pourrait ne pas être disponible sur tous les systèmes d'exécution de votre code.
Ce l'article à MS explique comment enregistrer un gif avec une table des couleurs personnalisées (ce n'exigent une confiance totale). Un gif animé est juste un ensemble de gifs pour chaque image avec quelques informations supplémentaires dans l'en-tête. Donc, la combinaison de ces deux articles devraient obtenir ce dont vous avez besoin.
Utilisation de l'échantillon à partir d'une application Windows Forms, ajouter des références à ces assemblées:
C:\Program Files\De Référence Assemblies\Microsoft\Framework.NETFramework\v4.0\PresentationCore.dll
C:\Program Files\De Référence Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Xaml.dll
C:\Program Files\De Référence Assemblies\Microsoft\Framework.NETFramework\v4.0\WindowsBase.dll
Puis
Int32Rect est dans le Système.Les fenêtres de l'espace de noms
BitmapSizeOptions est dans le Système.De Windows.Médias.L'imagerie de l'espace de noms
BitmapFrame est dans le Système.De Windows.Médias.L'imagerie de l'espace de noms
Aussi, ne pas oublier de fermer le flux de fichier (quelque chose comme ça):
J'ai remarqué qu'une plus grande alternative pour Imagemagick et NGif n'est pas répertorié dans les réponses encore.
FFMpeg peut être utilisé pour la création de GIFs animés à partir de:
Vous pouvez commencer à ffmpeg.exe directement à partir de code C# (avec le Système.Diagnostics.Processus) ou utilisez l'une de l'existant .NET ffmpeg wrappers:
(cet exemple de code utilise gratuit NReco VideoConverter - je suis l'auteur de cette composante, n'hésitez pas à poser des questions au sujet de son utilisation).
GIF taille peut facilement être réduite en diminuant le taux de trame et/ou la taille d'image.
Il est également possible d'obtenir la fin de la recherche de GIFs animés avec 2 passe-approche qui génère optimale GIF palette.