private void ConvertAndInsert(TextureInfo info, BinaryWriter bw, Bitmap png) { var palInfo = PaletteInfos.First(x => x.PaletteName.Contains(info.TextureName + "_pl")); BGR565 bGR565 = new BGR565(palInfo.PaletteBytes); byte[] img = new byte[0]; bw.BaseStream.Position = info.Offset + BaseOffsetTextures + TextureInfosBaseOffset; switch (info.Format) { case 1: //img = ImageConverter.BitmapToRawIndexed(new Bitmap(png), bGR565, TileMode.NotTiled, ColorDepth.F4BBP); break; case 3: img = ImageConverter.BitmapToRawIndexed(new Bitmap(png), bGR565, TileMode.NotTiled, ColorDepth.F4BBP); break; case 4: case 6: img = ImageConverter.BitmapToRawIndexed(new Bitmap(png), bGR565, TileMode.NotTiled, ColorDepth.F8BBP); break; default: break; } bw.Write(img); ReloadTextures(); }
private void GetImage(TextureInfo info, int textureSize, int paletteSize, ColorDepth colorDepth, BinaryReader br) { br.BaseStream.Position = info.Offset + BaseOffsetTextures + TextureInfosBaseOffset; byte[] img = br.ReadBytes(textureSize); var pInfoIndex = PaletteInfos.FindIndex(x => x.PaletteName.Contains(info.TextureName + "_pl")); br.BaseStream.Position = PalettesOffset + TextureInfosBaseOffset + PaletteInfos[pInfoIndex].Offset; byte[] palette = br.ReadBytes(paletteSize); PaletteInfos[pInfoIndex].PaletteBytes = palette; info.ColorCount = paletteSize / 2; BGR565 bGR565 = new BGR565(palette); PaletteInfos[pInfoIndex].Palette = bGR565.Colors; info.TextureImage = ImageConverter.RawIndexedToBitmap(img, info.Width, info.Height, bGR565, TileMode.NotTiled, colorDepth); info.Bpp = colorDepth; info.PaletteIndex = pInfoIndex; }