static void ReadImage(StreamHelper streamHelper, Stream fs, GifImage gifImage, List <GraphicEx> graphics, int frameCount) { ImageDescriptor imgDes = streamHelper.GetImageDescriptor(fs); GifFrame frame = new GifFrame(); frame.ImageDescriptor = imgDes; frame.LocalColorTable = gifImage.GlobalColorTable; if (imgDes.LctFlag) { frame.LocalColorTable = streamHelper.ReadByte(imgDes.LctSize * 3); } LZWDecoder lzwDecoder = new LZWDecoder(fs); int dataSize = streamHelper.Read(); frame.ColorDepth = dataSize; byte[] piexel = lzwDecoder.DecodeImageData(imgDes.Width, imgDes.Height, dataSize); frame.IndexedPixel = piexel; int blockSize = streamHelper.Read(); //DataStruct data = new DataStruct(blockSize, fs); new DataStruct(blockSize, fs); GraphicEx graphicEx = graphics[frameCount]; frame.GraphicExtension = graphicEx; frame.ColorBuffer = GetColorBufferFromPixel(piexel, frame.Palette, imgDes.InterlaceFlag, imgDes.Width, imgDes.Height); gifImage.Frames.Add(frame); }
static void ReadImage(StreamHelper streamHelper, Stream fs, GifImage gifImage, List<GraphicEx> graphics, int frameCount) { ImageDescriptor imgDes = streamHelper.GetImageDescriptor(fs); GifFrame frame = new GifFrame(); frame.ImageDescriptor = imgDes; frame.LocalColorTable = gifImage.GlobalColorTable; if (imgDes.LctFlag) { frame.LocalColorTable = streamHelper.ReadByte(imgDes.LctSize*3); } LZWDecoder lzwDecoder = new LZWDecoder(fs); int dataSize = streamHelper.Read(); frame.ColorDepth = dataSize; byte[] piexel = lzwDecoder.DecodeImageData(imgDes.Width, imgDes.Height, dataSize); frame.IndexedPixel = piexel; int blockSize = streamHelper.Read(); DataStruct data = new DataStruct(blockSize, fs); GraphicEx graphicEx = graphics[frameCount]; frame.GraphicExtension = graphicEx; Bitmap img = GetImageFromPixel(piexel, frame.Palette, imgDes.InterlaceFlag, imgDes.Width, imgDes.Height); frame.Image = img; gifImage.Frames.Add(frame); }