public static void CreateAnimatedGif( List <string> gifFiles, int delay, string outputFile) { delay /= 10; // 100th of a second FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.ReadWrite); BinaryWriter writer = new BinaryWriter(fs); byte[] gif_Signature = new byte[] { (byte)'G', (byte)'I', (byte)'F', (byte)'8', (byte)'9', (byte)'a' }; writer.Write(gif_Signature); for (int i = 0; i < gifFiles.Count; i++) { GifClass gif = new GifClass(); gif.LoadGifPicture(gifFiles[i]); if (i == 0) { writer.Write(gif.m_ScreenDescriptor.ToArray()); } writer.Write(GifCreator.CreateGraphicControlExtensionBlock(delay)); writer.Write(gif.m_ImageDescriptor.ToArray()); writer.Write(gif.m_ColorTable.ToArray()); writer.Write(gif.m_ImageData.ToArray()); gif.Close(); } writer.Write(GifCreator.CreateLoopBlock()); writer.Write((byte)0x3B); //End file fs.Close(); writer.Close(); }
public static void CreateAnimatedGif( List<string> gifFiles, int delay, string outputFile) { delay /= 10; // 100th of a second FileStream fs = new FileStream(outputFile, FileMode.Create, FileAccess.ReadWrite); BinaryWriter writer = new BinaryWriter(fs); byte[] gif_Signature = new byte[] { (byte)'G', (byte)'I', (byte)'F', (byte)'8', (byte)'9', (byte)'a' }; writer.Write(gif_Signature); for (int i = 0; i < gifFiles.Count; i++) { GifClass gif = new GifClass(); gif.LoadGifPicture(gifFiles[i]); if (i == 0) writer.Write(gif.m_ScreenDescriptor.ToArray()); writer.Write(GifCreator.CreateGraphicControlExtensionBlock(delay)); writer.Write(gif.m_ImageDescriptor.ToArray()); writer.Write(gif.m_ColorTable.ToArray()); writer.Write(gif.m_ImageData.ToArray()); gif.Close(); } writer.Write(GifCreator.CreateLoopBlock()); writer.Write((byte)0x3B); //End file fs.Close(); writer.Close(); }