public static void ConvertBmpToSwf(Bitmap bmp, string outputSwfFileName) { int posX = 0; //Posx int posY = 0; //Posy Image image = bmp; int width = image.Width; int height = image.Height; //自动缩小大图片 if (width > 610) { double rw = width; double rh = height; double newheight = rh * 610 / rw; width = 610; height = Convert.ToInt32(newheight); image = image.GetThumbnailImage(width, height, null, IntPtr.Zero); } Swf swf = new Swf(); swf.Size = new Rect(0, 0, (posX + width) * 20, (posY + height) * 20); swf.Version = 7; swf.Header.Signature = "CWS"; swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255)); ushort newDefineId = swf.GetNewDefineId(); swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(newDefineId, image)); DefineShapeTag tag = new DefineShapeTag(); tag.CharacterId = swf.GetNewDefineId(); tag.Rect = new Rect((posX * 20) - 1, (posY * 20) - 1, ((posX + width) * 20) - 1, ((posY + height) * 20) - 1); FillStyleCollection fillStyleArray = new FillStyleCollection(); fillStyleArray.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, 0xffff, new Matrix(0, 0, 20.0, 20.0))); fillStyleArray.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, newDefineId, new Matrix((posX * 20) - 1, (posY * 20) - 1, (20.0 * width) / ((double)image.Width), (20.0 * height) / ((double)image.Height)))); LineStyleCollection lineStyleArray = new LineStyleCollection(); ShapeRecordCollection shapes = new ShapeRecordCollection(); shapes.Add(new StyleChangeRecord((posX * 20) - 1, (posY * 20) - 1, 2)); shapes.Add(new StraightEdgeRecord(width * 20, 0)); shapes.Add(new StraightEdgeRecord(0, height * 20)); shapes.Add(new StraightEdgeRecord(-width * 20, 0)); shapes.Add(new StraightEdgeRecord(0, -height * 20)); shapes.Add(new EndShapeRecord()); tag.ShapeWithStyle = new ShapeWithStyle(fillStyleArray, lineStyleArray, shapes); swf.Tags.Add(tag); swf.Tags.Add(new PlaceObject2Tag(tag.CharacterId, 1, 0, 0)); swf.Tags.Add(new ShowFrameTag()); swf.Tags.Add(new EndTag()); SwfWriter writer = new SwfWriter(outputSwfFileName); writer.Write(swf); writer.Close(); image.Dispose(); }
/// <summary> /// Gets the picture tag. /// </summary> /// <param name="image">Image.</param> /// <param name="characterId">Character id.</param> /// <returns></returns> public static BaseTag GetPictureTag(Image image, ushort characterId) { return(DefineBitsJpeg2Tag.FromImage(characterId, image)); //return DefineBitsJpeg2Tag.FromImage(characterId, image); /* * if (image.RawFormat.Equals(ImageFormat.Jpeg)) * return DefineBitsJpeg2Tag.FromImage(characterId, image); * else if (image.RawFormat.Equals(ImageFormat.Bmp) || * image.RawFormat.Equals(ImageFormat.MemoryBmp)) * return DefineBitsLossLess2Tag.FromImage(characterId, image); * else * throw new InvalidImageFormatException(); */ }
/// <summary> /// Read next tag from swf input stream. /// </summary> /// <param name="version">Version.</param> /// <param name="binaryReader">Binary reader.</param> /// <param name="tagList">Tag list.</param> /// <returns></returns> internal static BaseTag ReadTag(byte version, BufferedBinaryReader binaryReader, BaseTagCollection tagList) { long posBefore = binaryReader.BaseStream.Position; RecordHeader rh = new RecordHeader(); rh.ReadData(binaryReader); int offset = (int)(binaryReader.BaseStream.Position - posBefore); binaryReader.BaseStream.Position = posBefore; BaseTag resTag = null; switch (rh.TagCode) { case (int)TagCodeEnum.DefineBitsJpeg2: resTag = new DefineBitsJpeg2Tag(); break; case (int)TagCodeEnum.DefineBitsJpeg3: resTag = new DefineBitsJpeg3Tag(); break; case (int)TagCodeEnum.DefineBitsLossLess: resTag = new DefineBitsLossLessTag(); break; case (int)TagCodeEnum.DefineBitsLossLess2: resTag = new DefineBitsLossLess2Tag(); break; case (int)TagCodeEnum.End: resTag = new EndTag(); break; case (int)TagCodeEnum.SymbolClass: resTag = new SymbolClass(); break; default: resTag = new BaseTag(binaryReader.ReadBytes(System.Convert.ToInt32(rh.TagLength + offset))); break; } //Read the data of the current tag resTag.ReadData(version, binaryReader); //LOG long mustRead = rh.TagLength + offset; if (posBefore + mustRead != binaryReader.BaseStream.Position) { binaryReader.BaseStream.Position = posBefore + rh.TagLength + offset; } return(resTag); }
public void ExtractFilesFromSWF(object obj) { string file; if (!obj.GetType().Equals(typeof(string))) { return; } file = (string)obj; swfReader = new SwfReader(file); Swf swf = swfReader.ReadSwf(); swfReader.Close(); swfReader = null; foreach (BaseTag tag in swf.Tags) { if (tag is SymbolClass) { symbols = tag as SymbolClass; break; } } foreach (BaseTag tag in swf.Tags) { if (tag is DefineBitsJpeg3Tag) { DefineBitsJpeg3Tag imgTag = tag as DefineBitsJpeg3Tag; var ic = new ImageContainer(); ic.SWFFileName = Path.GetFileNameWithoutExtension(file); if (symbols != null) { ic.Name = symbols.GetCharcterIdName(imgTag.CharacterId); } else { ic.Name = imgTag.CharacterId.ToString(); } ic.PngTag = imgTag; ImgPNG.Add(ic); } else if (tag is DefineBitsJpeg2Tag) { DefineBitsJpeg2Tag imgTag = tag as DefineBitsJpeg2Tag; var ic = new ImageContainer(); ic.SWFFileName = Path.GetFileNameWithoutExtension(file); if (symbols != null) { ic.Name = symbols.GetCharcterIdName(imgTag.CharacterId); } else { ic.Name = imgTag.CharacterId.ToString(); } ic.JpegTag = imgTag; ImgJPG.Add(ic); } } }
static void Main(string[] args) { //Picture to transform string imgPath = "img.jpg"; string path = "test_alpha.swf"; //Alpha translation informations int alphaFrameNum = 35; //frame duration int alphaStart = 10; //alpha percent start int alphaEnd = 100; //alpha percent end //Load the picture to a GDI image Image img = Image.FromFile(imgPath); int posX = 0; int posY = 0; int imgWidth = img.Width / 2; int imgHeight = img.Height / 2; //Create a new Swf instance Swf swf = new Swf(); swf.Size = new Rect(0, 0, (posX + imgWidth) * 20, (posY + imgHeight) * 20); swf.Version = 5; //Set the background color tag swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255)); //Set the jpeg tag ushort jpegId = swf.GetNewDefineId(); //Load the jped from an image swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img)); //Define the picture's shape tag DefineShapeTag shapeTag = new DefineShapeTag(); shapeTag.CharacterId = swf.GetNewDefineId(); shapeTag.Rect = new Rect(posX * 20 - 1, posY * 20 - 1, (posX + imgWidth) * 20 - 1, (posY + imgHeight) * 20 - 1); FillStyleCollection fillStyles = new FillStyleCollection(); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, ushort.MaxValue, new Matrix(0, 0, 20, 20))); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, jpegId, new Matrix(posX * 20 - 1, posY * 20 - 1, (20.0 * imgWidth) / img.Width, (20.0 * imgHeight) / img.Height))); LineStyleCollection lineStyles = new LineStyleCollection(); ShapeRecordCollection shapes = new ShapeRecordCollection(); shapes.Add(new StyleChangeRecord(posX * 20 - 1, posY * 20 - 1, 2)); shapes.Add(new StraightEdgeRecord(imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, imgHeight * 20)); shapes.Add(new StraightEdgeRecord(-imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, -imgHeight * 20)); shapes.Add(new EndShapeRecord()); shapeTag.ShapeWithStyle = new ShapeWithStyle(fillStyles, lineStyles, shapes); swf.Tags.Add(shapeTag); //Place the picture swf.Tags.Add(new PlaceObject2Tag(shapeTag.CharacterId, 1, 0, 0)); //Add a frame swf.Tags.Add(new ShowFrameTag()); for (int i = 0; i < alphaFrameNum; i++) { int percent = (i * 100) / alphaFrameNum; int diff = alphaEnd - alphaStart; int valPercent = (diff * percent) / 100 + alphaStart; int valRgb = (255 * valPercent) / 100; swf.Tags.Add(new PlaceObject2Tag(1, new CXFormWithAlphaData(256, 256, 256, valRgb))); swf.Tags.Add(new ShowFrameTag()); } swf.Tags.Add(new EndTag()); //Write the swf to a file SwfWriter writer = new SwfWriter(path); writer.Write(swf); writer.Close(); img.Dispose(); }
static void Main(string[] args) { //Picture to transform string imgPath = "img.jpg"; //string imgPath = "Untitled-1.bmp"; //File name of the result swf file string path = "test.swf"; //Load the picture to a GDI image Image img = Image.FromFile(imgPath); int posX = 0; int posY = 0; int imgWidth = img.Width + 100; int imgHeight = img.Height + 100; //Create a new Swf instance Swf swf = new Swf(); swf.Size = new Rect(0, 0, (posX + imgWidth) * 20, (posY + imgHeight) * 20); swf.Version = 5; //Set the background color tag swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255)); //Set the jpeg tag ushort jpegId = swf.GetNewDefineId(); //Load the jped from an image swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img)); //Define the picture's shape tag DefineShapeTag shapeTag = new DefineShapeTag(); shapeTag.CharacterId = swf.GetNewDefineId(); shapeTag.Rect = new Rect(posX * 20 - 1, posY * 20 - 1, (posX + imgWidth) * 20 - 1, (posY + imgHeight) * 20 - 1); FillStyleCollection fillStyles = new FillStyleCollection(); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, ushort.MaxValue, new Matrix(0, 0, 20, 20))); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, jpegId, new Matrix(posX * 20 - 1, posY * 20 - 1, (20.0 * imgWidth) / img.Width, (20.0 * imgHeight) / img.Height))); LineStyleCollection lineStyles = new LineStyleCollection(); ShapeRecordCollection shapes = new ShapeRecordCollection(); shapes.Add(new StyleChangeRecord(posX * 20 - 1, posY * 20 - 1, 2)); shapes.Add(new StraightEdgeRecord(imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, imgHeight * 20)); shapes.Add(new StraightEdgeRecord(-imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, -imgHeight * 20)); shapes.Add(new EndShapeRecord()); shapeTag.ShapeWithStyle = new ShapeWithStyle(fillStyles, lineStyles, shapes); swf.Tags.Add(shapeTag); //Place the picture swf.Tags.Add(new PlaceObject2Tag(shapeTag.CharacterId, 1, 0, 0)); //Add a frame swf.Tags.Add(new ShowFrameTag()); swf.Tags.Add(new EndTag()); //Write the swf to a file SwfWriter writer = new SwfWriter(path); writer.Write(swf); writer.Close(); img.Dispose(); }
/// <summary> /// Read next tag from swf input stream. /// </summary> /// <param name="version">Version.</param> /// <param name="binaryReader">Binary reader.</param> /// <param name="tagList">Tag list.</param> /// <returns></returns> internal static BaseTag ReadTag(byte version, BufferedBinaryReader binaryReader, BaseTagCollection tagList) { long posBefore = binaryReader.BaseStream.Position; RecordHeader rh = new RecordHeader(); rh.ReadData(binaryReader); int offset = (int)(binaryReader.BaseStream.Position - posBefore); binaryReader.BaseStream.Position = posBefore; BaseTag resTag = null; switch (rh.TagCode) { case (int)TagCodeEnum.DefineBits: resTag = new DefineBitsTag(); break; case (int)TagCodeEnum.DefineBitsJpeg2: resTag = new DefineBitsJpeg2Tag(); break; case (int)TagCodeEnum.DefineBitsJpeg3: resTag = new DefineBitsJpeg3Tag(); break; case (int)TagCodeEnum.DefineBitsLossLess: resTag = new DefineBitsLossLessTag(); break; case (int)TagCodeEnum.DefineBitsLossLess2: resTag = new DefineBitsLossLess2Tag(); break; case (int)TagCodeEnum.DefineButton: resTag = new DefineButtonTag(); break; case (int)TagCodeEnum.DefineButton2: resTag = new DefineButton2Tag(); break; case (int)TagCodeEnum.DefineButtonCxForm: resTag = new DefineButtonCxFormTag(); break; case (int)TagCodeEnum.DefineButtonSound: resTag = new DefineButtonSoundTag(); break; case (int)TagCodeEnum.DefineEditText: resTag = new DefineEditTextTag(); break; case (int)TagCodeEnum.DefineFont: resTag = new DefineFontTag(); break; case (int)TagCodeEnum.DefineFont2: resTag = new DefineFont2Tag(); break; case (int)TagCodeEnum.DefineFontInfo: resTag = new DefineFontInfoTag(); break; case (int)TagCodeEnum.DefineFontInfo2: resTag = new DefineFontInfo2Tag(); break; case (int)TagCodeEnum.DefineMorphShape: resTag = new DefineMorphShapeTag(); break; case (int)TagCodeEnum.DefineShape: resTag = new DefineShapeTag(); break; case (int)TagCodeEnum.DefineShape2: resTag = new DefineShape2Tag(); break; case (int)TagCodeEnum.DefineShape3: resTag = new DefineShape3Tag(); break; case (int)TagCodeEnum.DefineSound: resTag = new DefineSoundTag(); break; case (int)TagCodeEnum.DefineSprite: resTag = new DefineSpriteTag(); break; case (int)TagCodeEnum.DefineText: resTag = new DefineTextTag(); break; case (int)TagCodeEnum.DefineText2: resTag = new DefineText2Tag(); break; case (int)TagCodeEnum.DefineVideoStream: resTag = new DefineVideoStreamTag(); break; case (int)TagCodeEnum.DoAction: resTag = new DoActionTag(); break; case (int)TagCodeEnum.EnableDebugger: resTag = new EnableDebuggerTag(); break; case (int)TagCodeEnum.EnableDebugger2: resTag = new EnableDebugger2Tag(); break; case (int)TagCodeEnum.End: resTag = new EndTag(); break; case (int)TagCodeEnum.ExportAssets: resTag = new ExportAssetsTag(); break; case (int)TagCodeEnum.FrameLabel: resTag = new FrameLabelTag(); break; case (int)TagCodeEnum.ImportAssets: resTag = new ImportAssetsTag(); break; case (int)TagCodeEnum.InitAction: resTag = new InitActionTag(); break; case (int)TagCodeEnum.JpegTable: resTag = new JpegTableTag(); break; case (int)TagCodeEnum.PlaceObject: resTag = new PlaceObjectTag(); break; case (int)TagCodeEnum.PlaceObject2: resTag = new PlaceObject2Tag(); break; case (int)TagCodeEnum.Protect: resTag = new ProtectTag(); break; case (int)TagCodeEnum.RemoveObject: resTag = new RemoveObjectTag(); break; case (int)TagCodeEnum.RemoveObject2: resTag = new RemoveObject2Tag(); break; case (int)TagCodeEnum.ScriptLimit: resTag = new ScriptLimitTag(); break; case (int)TagCodeEnum.SetBackgroundColor: resTag = new SetBackgroundColorTag(); break; case (int)TagCodeEnum.SetTabIndex: resTag = new SetTabIndexTag(); break; case (int)TagCodeEnum.ShowFrame: resTag = new ShowFrameTag(); break; case (int)TagCodeEnum.SoundStreamBlock: resTag = new SoundStreamBlockTag(); break; case (int)TagCodeEnum.SoundStreamHead: resTag = new SoundStreamHeadTag(); break; case (int)TagCodeEnum.SoundStreamHead2: resTag = new SoundStreamHead2Tag(); break; case (int)TagCodeEnum.StartSound: resTag = new StartSoundTag(); break; case (int)TagCodeEnum.Metadata: resTag = new MetadataTag(); break; case (int)TagCodeEnum.SymbolClass: resTag = new SymbolClassTag(); break; //TODO: Sorenson Codec case (int)TagCodeEnum.VideoFrame: resTag = ReadVideoFrameTag(binaryReader, tagList); break; default: resTag = new BaseTag(binaryReader.ReadBytes(System.Convert.ToInt32(rh.TagLength + offset)), rh.TagCode); break; } //Read the data of the current tag resTag.ReadData(version, binaryReader); //LOG long mustRead = rh.TagLength + offset; if (posBefore + mustRead != binaryReader.BaseStream.Position) { binaryReader.BaseStream.Position = posBefore + rh.TagLength + offset; if (log.IsErrorEnabled) { log.Error(Enum.GetName(TagCodeEnum.DefineBits.GetType(), rh.TagCode) + "....KO"); } } else if (log.IsInfoEnabled) { log.Info(Enum.GetName(TagCodeEnum.DefineBits.GetType(), rh.TagCode) + "....OK (" + mustRead + ")"); } return(resTag); }
static void Main(string[] args) { //Picture to transform string imgPath = "img.jpg"; string path = "test_color.swf"; //Alpha translation informations int colorEffectFrameNum = 20; //frame duration System.Drawing.Color startColor = System.Drawing.Color.Yellow; System.Drawing.Color endColor = System.Drawing.Color.Black; //Load the picture to a GDI image Image img = Image.FromFile(imgPath); int posX = 0; int posY = 0; int imgWidth = img.Width / 2; int imgHeight = img.Height / 2; //Create a new Swf instance Swf swf = new Swf(); swf.Size = new Rect(0, 0, (posX + imgWidth) * 20, (posY + imgHeight) * 20); swf.Version = 5; //Set the background color tag swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255)); //Set the jpeg tag ushort jpegId = swf.GetNewDefineId(); //Load the jped from an image swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img)); //Define the picture's shape tag DefineShapeTag shapeTag = new DefineShapeTag(); shapeTag.CharacterId = swf.GetNewDefineId(); shapeTag.Rect = new Rect(posX * 20 - 1, posY * 20 - 1, (posX + imgWidth) * 20 - 1, (posY + imgHeight) * 20 - 1); FillStyleCollection fillStyles = new FillStyleCollection(); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, ushort.MaxValue, new Matrix(0, 0, 20, 20))); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, jpegId, new Matrix(posX * 20 - 1, posY * 20 - 1, (20.0 * imgWidth) / img.Width, (20.0 * imgHeight) / img.Height))); LineStyleCollection lineStyles = new LineStyleCollection(); ShapeRecordCollection shapes = new ShapeRecordCollection(); shapes.Add(new StyleChangeRecord(posX * 20 - 1, posY * 20 - 1, 2)); shapes.Add(new StraightEdgeRecord(imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, imgHeight * 20)); shapes.Add(new StraightEdgeRecord(-imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, -imgHeight * 20)); shapes.Add(new EndShapeRecord()); shapeTag.ShapeWithStyle = new ShapeWithStyle(fillStyles, lineStyles, shapes); swf.Tags.Add(shapeTag); //Place the picture swf.Tags.Add(new PlaceObject2Tag(shapeTag.CharacterId, 1, 0, 0)); //Add a frame swf.Tags.Add(new ShowFrameTag()); for (int i = 0; i < colorEffectFrameNum; i++) { int red = GetRGBValue(i, startColor.R, endColor.R, colorEffectFrameNum); int green = GetRGBValue(i, startColor.G, endColor.G, colorEffectFrameNum); int blue = GetRGBValue(i, startColor.B, endColor.B, colorEffectFrameNum); int alpha = GetRGBValue(i, startColor.A, endColor.A, colorEffectFrameNum); swf.Tags.Add(new PlaceObject2Tag(1, new CXFormWithAlphaData(red, green, blue, alpha))); swf.Tags.Add(new ShowFrameTag()); } swf.Tags.Add(new EndTag()); //Write the swf to a file SwfWriter writer = new SwfWriter(path); writer.Write(swf); writer.Close(); img.Dispose(); }
/// <summary> /// 生成flash /// </summary> /// <param name="imgFilePaths"></param> /// <param name="saveSwfFilePath"></param> /// <returns></returns> public static bool CreateSwf(List <string> imgFilePaths, string saveSwfFilePath) { try { Swf swf = new Swf(); foreach (var item in imgFilePaths) { if (!new FileInfo(item).Exists) { continue; } Image img = Image.FromFile(item); img = img.GetThumbnailImage(img.Width / 2, img.Height / 2, null, IntPtr.Zero); int posX = 0; int posY = 0; int imgWidth = img.Width; int imgHeight = img.Height; //Create a new Swf instance //Set size in inch unit (1 pixel = 20 inches) swf.Size = new Rect(0, 0, (posX + imgWidth) * 20, (posY + imgHeight) * 20); swf.Version = 7; //Version 7 (for compression, must be > 5) swf.Header.Signature = "CWS"; //Set the signature to compress the swf //Set the background color tag as white swf.Tags.Add(new SetBackgroundColorTag(255, 255, 255)); //Set the jpeg tag ushort jpegId = swf.GetNewDefineId(); //Load the jped directly from an image //In fact, this line will load the jpeg data in the file as //a library element only (not to display the jpeg) swf.Tags.Add(DefineBitsJpeg2Tag.FromImage(jpegId, img)); //Now we will define the picture's shape tag //to define all the transformations on the picture //(as rotation, color effects, etc..) DefineShapeTag shapeTag = new DefineShapeTag(); shapeTag.CharacterId = swf.GetNewDefineId(); shapeTag.Rect = new Rect(posX * 20 - 1, posY * 20 - 1, (posX + imgWidth) * 20 - 1, (posY + imgHeight) * 20 - 1); FillStyleCollection fillStyles = new FillStyleCollection(); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, ushort.MaxValue, new Matrix(0, 0, 20, 20))); fillStyles.Add(new BitmapFill(FillStyleType.ClippedBitmapFill, jpegId, new Matrix(posX * 20 - 1, posY * 20 - 1, (20.0 * imgWidth) / img.Width, (20.0 * imgHeight) / img.Height))); LineStyleCollection lineStyles = new LineStyleCollection(); ShapeRecordCollection shapes = new ShapeRecordCollection(); shapes.Add(new StyleChangeRecord(posX * 20 - 1, posY * 20 - 1, 2)); shapes.Add(new StraightEdgeRecord(imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, imgHeight * 20)); shapes.Add(new StraightEdgeRecord(-imgWidth * 20, 0)); shapes.Add(new StraightEdgeRecord(0, -imgHeight * 20)); shapes.Add(new EndShapeRecord()); shapeTag.ShapeWithStyle = new ShapeWithStyle(fillStyles, lineStyles, shapes); swf.Tags.Add(shapeTag); //Place the picture to the screen with depth=1 swf.Tags.Add(new PlaceObject2Tag(shapeTag.CharacterId, 1, 0, 0)); swf.Tags.Add(new ShowFrameTag()); swf.Tags.Add(new RemoveObject2Tag(1)); //THE ADDED LINE!!// img.Dispose(); } //Write the swf to a file SwfWriter writer = new SwfWriter(saveSwfFilePath); writer.Write(swf); writer.Close(); return(true); } catch { return(false); } }
static Tuple <int, Image> DecodeJpeg2(DefineBitsJpeg2Tag tag) { return(Tuple.Create((int)tag.CharacterId, tag.DecompileToImage())); }