static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Usage: SwfExport <file.swf>"); return; } var file = args[0]; if (!File.Exists(file)) { Console.WriteLine("File not found"); return; } try { Console.WriteLine("Loading swf"); var sr = new SwfDotNet.IO.SwfReader(File.OpenRead(file)); var swf = sr.ReadSwf(); var tags = swf.Tags.Cast<BaseTag>().ToList(); Console.WriteLine("Gettings assets"); var asserts = new List<Assert>(); asserts.AddRange(GetSymbolClasses(tags)); asserts.AddRange(GetExportAsserts(tags)); Console.WriteLine("Loading images"); var imgs = GetImages(tags); Console.WriteLine("Dumping images"); if (!Directory.Exists("output")) Directory.CreateDirectory("output"); if (!Directory.Exists("output\\unknown")) Directory.CreateDirectory("output\\unknown"); var sw = Stopwatch.StartNew(); int i = 0; foreach (var img in imgs) { var asset = asserts.Find(a => a.TargetCharacterId == img.Item1); var name = (asset != null ? asset.Name : "unknown\\" + img.Item1.ToString(CultureInfo.InvariantCulture)) + ".png"; img.Item2.Save("output\\" + name, ImageFormat.Png); i++; if (sw.ElapsedMilliseconds > 2000) { Console.WriteLine("Progress {0}/{1}", i, imgs.Count); sw.Restart(); } } Console.WriteLine("Success"); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } }
static void Main(string[] args) { if (args.Length != 1) { Console.WriteLine("Usage: SwfExport <file.swf>"); return; } var file = args[0]; if (!File.Exists(file)) { Console.WriteLine("File not found"); return; } try { Console.WriteLine("Loading swf"); var sr = new SwfDotNet.IO.SwfReader(File.OpenRead(file)); var swf = sr.ReadSwf(); var tags = swf.Tags.Cast <BaseTag>().ToList(); Console.WriteLine("Gettings assets"); var asserts = new List <Assert>(); asserts.AddRange(GetSymbolClasses(tags)); asserts.AddRange(GetExportAsserts(tags)); Console.WriteLine("Loading images"); var imgs = GetImages(tags); Console.WriteLine("Dumping images"); if (!Directory.Exists("output")) { Directory.CreateDirectory("output"); } if (!Directory.Exists("output\\unknown")) { Directory.CreateDirectory("output\\unknown"); } var sw = Stopwatch.StartNew(); int i = 0; foreach (var img in imgs) { var asset = asserts.Find(a => a.TargetCharacterId == img.Item1); var name = (asset != null ? asset.Name : "unknown\\" + img.Item1.ToString(CultureInfo.InvariantCulture)) + ".png"; img.Item2.Save("output\\" + name, ImageFormat.Png); i++; if (sw.ElapsedMilliseconds > 2000) { Console.WriteLine("Progress {0}/{1}", i, imgs.Count); sw.Restart(); } } Console.WriteLine("Success"); } catch (Exception ex) { Console.WriteLine("Error: " + ex); } }