public static Npck FromSpriteImage(EmguImage[] images, int[] frames, Npck original) { SpriteImporter importer = new SpriteImporter(); MemoryStream nclrStr = new MemoryStream(); MemoryStream ncgrLinealStr = new MemoryStream(); MemoryStream ncgrTiledStr = new MemoryStream(); MemoryStream ncerStr = new MemoryStream(); // Create sprites images to import // those sprite that have not been exported (they didn't have text) if (original[0] != null) { Nclr nclr = new Nclr(original[0]); Ncgr ncgr = new Ncgr(original[1] == null ? original[2] : original[1]); Ncer ncer = new Ncer(original[3]); // Set old settings importer.DispCnt = ncgr.RegDispcnt; importer.Quantization = new ManyFixedPaletteQuantization(nclr.GetPalettes()); importer.OriginalPalettes = nclr.GetPalettes(); importer.Format = nclr.Format; if (nclr.Format == ColorFormat.Indexed_8bpp) { importer.PaletteMode = PaletteMode.Palette256_1; } else { importer.PaletteMode = PaletteMode.Palette16_16; } int idx = 0; for (int i = 0; i < ncer.NumFrames; i++) { if (frames.Contains(i)) { importer.AddFrame(images[idx++]); } else if (ncer != null) { importer.AddFrame(ncer.CreateBitmap(i, ncgr, nclr), ncer.GetFrame(i)); } } } else { foreach (EmguImage img in images) { importer.AddFrame(img); } } // TEMP: Check if the files were present if (original[0] == null) { Console.Write("(Warning: No palette) "); } if (original[1] == null) { //Console.Write("(Warning: No HImage) "); ncgrTiledStr = null; } if (original[2] == null) { //Console.Write("(Warning: No LImage) "); ncgrLinealStr = null; } if (original[3] == null) { Console.Write("(Warning: No sprite) "); } if (original[5] == null) { Console.Write("(Warning: No animation) "); } importer.Generate(nclrStr, ncgrLinealStr, ncgrTiledStr, ncerStr); nclrStr.Position = 0; ncerStr.Position = 0; if (ncgrTiledStr != null) { ncgrTiledStr.Position = 0; } if (ncgrLinealStr != null) { ncgrLinealStr.Position = 0; } return(Npck.FromSpriteStreams(ncerStr, ncgrLinealStr, ncgrTiledStr, nclrStr, original[5])); }