Estoy buscando una biblioteca de animación .NET C# gif (no tiene que ser gratuita) que me permita tomar un archivo gif y adjuntarlo a un marco de jpeg o incluso a otro archivo gif. También necesitaré poder agregar el retraso cambiante entre los marcos. La respuesta a preguntas similares aquí generalmente hace referencia a una biblioteca básica que solo le permite agregar un retraso fijo entre imágenes estáticas.biblioteca gif avanzada
6
A
Respuesta
7
Terminé modificando el código http://www.codeproject.com/KB/GDI-plus/NGif.aspx para obtener lo que necesitaba y funcionó! :)
para el manejo de archivos gif fuente añade que este método:
private bool AddGifFrames(Image image)
{
// implementation
var fd = new FrameDimension(image.FrameDimensionsList[0]);
int frameCount = image.GetFrameCount(fd);
var frames = new List<Tuple<int, Image>>();
if (frameCount > 1)
{
frames = new List<Tuple<int, Image>>();
//0x5100 is the property id of the GIF frame's durations
//this property does not exist when frameCount <= 1
byte[] times = image.GetPropertyItem(0x5100).Value;
for (int i = 0; i < frameCount; i++)
{
//selects GIF frame based on FrameDimension and frameIndex
image.SelectActiveFrame(fd, i);
//length in milliseconds of display duration
int length = BitConverter.ToInt32(times, 4 * i);
//save currect image frame as new bitmap
frames.Add(new Tuple<int, Image>(length, new Bitmap(image)));
}
} // Not animated
foreach (var frame in frames)
{
HandleFrame(frame.Item2, frame.Item1);
}
return true;
}
y en cuanto a los retrasos de aduana He modificado este método:
protected void WriteGraphicCtrlExt(int? delay)
{
Fs.WriteByte(0x21); // extension introducer
Fs.WriteByte(0xf9); // GCE label
Fs.WriteByte(4); // data block size
int transp, disp;
if (Transparent == Color.Empty)
{
transp = 0;
disp = 0; // dispose = no action
}
else
{
transp = 1;
disp = 2; // force clear if using transparent color
}
if (Dispose >= 0)
{
disp = Dispose & 7; // user override
}
disp <<= 2;
// packed fields
Fs.WriteByte(Convert.ToByte(0 | // 1:3 reserved
disp | // 4:6 disposal
0 | // 7 user input - 0 = none
transp)); // 8 transparency flag
WriteShort(delay ?? Delay); // delay x 1/100 sec
Fs.WriteByte(Convert.ToByte(TransIndex)); // transparent color index
Fs.WriteByte(0); // block terminator
}
a resumir, - este el código puede agregar un gif como un marco dividiéndolo en cuadros y agregándolos, y también puede agregar retrasos personalizados.
Cuestiones relacionadas
- 1. ¿Hay alguna (algo) avanzada biblioteca de matemáticas de Javascript?
- 2. Crea un gif animado usando la biblioteca de GD
- 3. Búsqueda avanzada en Vim
- 4. Scala, extensión genérica avanzada
- 5. C# - herencia avanzada
- 6. avanzada SQL en rieles
- 7. git jenkins función avanzada
- 8. Yii url avanzada reescribir
- 9. Búsqueda avanzada de cadenas de python
- 10. Consola avanzada IO en .NET
- 11. Php/MySql 'Búsqueda avanzada' Página
- 12. avanzada Python lista de comprensión
- 13. jqGrid búsqueda avanzada 'beforeSearch' opción?
- 14. ¿Cuál es la más avanzada de la biblioteca Javascript 3D para el HTML5 Canvas
- 15. Generar GIF animado con canvas HTML5
- 16. GIF animado en NSImageView
- 17. jQuery GIF Animaciones
- 18. Dividir GIF en marcos
- 19. Android: Gif animado
- 20. animación GIF en Qt
- 21. Mostrar GIF animado
- 22. Crear un .gif animado desde .jpeg/png
- 23. ¿Cómo puedo generar imágenes GIF en .NET?
- 24. Ocultar configuración avanzada de Core Data advertencia
- 25. mesa Numpy - Criterios de selección múltiple avanzada
- 26. Búsqueda avanzada con Drupal (Vistas y CCK)
- 27. RegEx avanzada: Positivo de búsqueda hacia atrás
- 28. Cuenta avanzada y unión en Rails
- 29. Búsqueda avanzada Uso de Hibernate Search
- 30. Documentación avanzada para el desarrollador node.js
Se cerró porque, como se le preguntó, era un duplicado. No mencionó la necesidad de cambiar la demora entre cuadros o que encontró respuestas anteriores que no satisfacían sus necesidades. :) –
Estoy de acuerdo, simplemente no esperaba que se cerrara tan rápido :) –
Por favor, no firme sus mensajes. –