public Bitmap ExporteImagemSemTileMap(List <SixLabors.ImageSharp.Image> tiles, Bitmap imagemFinal) { if (tiles.Count > 0) { int contadorTiles = 0; using (SixLabors.ImageSharp.Image <Rgba32> image = new SixLabors.ImageSharp.Image <Rgba32>(imagemFinal.Width, imagemFinal.Height)) { for (int y = 0; y < imagemFinal.Height; y += 8) { Span <Rgba32> pixelRowSpan = image.GetPixelRowSpan(y); for (int x = 0; x < imagemFinal.Width; x += 8) { image.Mutate(o => o.DrawImage(tiles[contadorTiles], new SixLabors.ImageSharp.Point(x, y), 1f)); tiles[contadorTiles].Dispose(); //pixelRowSpan[x] = new Rgba32(x / 255, y / 255, 50, 255); contadorTiles++; } } return(image.ToBitmap()); } } return(null); }
public Bitmap Exporte2bpp2D(int largura, int altura, byte[] imagem) { CoresPaleta = new List <Color>(); CoresPaleta.Add(Color.FromArgb(0, 0, 0)); CoresPaleta.Add(Color.FromArgb(255, 255, 255)); CoresPaleta.Add(Color.FromArgb(169, 169, 169)); CoresPaleta.Add(Color.FromArgb(100, 100, 100)); int contador = 0; var bits = new BitArray(imagem); SixLabors.ImageSharp.Image <Rgba32> imagemFinal = new SixLabors.ImageSharp.Image <Rgba32>(largura, altura); for (int y = 0; y < imagemFinal.Height; y++) { Span <Rgba32> pixelRowSpan = imagemFinal.GetPixelRowSpan(y); for (int x = 0; x < imagemFinal.Width; x++) { int valor1 = bits[contador] ? 1 : 0; int valor2 = bits[contador + 1] ? 1 : 0; int valorFinal = (valor2 << 1) | valor1; pixelRowSpan[x] = new Rgba32(CoresPaleta[valorFinal].R, CoresPaleta[valorFinal].G, CoresPaleta[valorFinal].B); contador += 2; } } return(imagemFinal.ToBitmap()); }
public Bitmap LeiaTileMapERetorneImagem(List <ushort> tileMap, List <SixLabors.ImageSharp.Image> tiles, Bitmap imagemFinal) { int contadorTileMap = 0; int resY = tileMap.Count / 32 * 8; imagemFinal = new Bitmap(256, resY); using (SixLabors.ImageSharp.Image <Rgba32> image = new SixLabors.ImageSharp.Image <Rgba32>(imagemFinal.Width, imagemFinal.Height)) { for (int y = 0; y < imagemFinal.Height; y += 8) { for (int x = 0; x < imagemFinal.Width; x += 8) { int valor = tileMap[contadorTileMap]; int tileNum = valor & 0x3FF; valor = valor >> 10; var tile = tiles[tileNum].Clone(i => i.Flip(FlipMode.None)); int horizotal = valor & 1; valor = valor >> 1; int vertical = valor & 1; if (horizotal == 1) { tile.Mutate(t => t.RotateFlip(RotateMode.Rotate180, FlipMode.Vertical)); } if (vertical == 1) { tile.Mutate(t => t.RotateFlip(RotateMode.Rotate180, FlipMode.Horizontal)); } image.Mutate(o => o.DrawImage(tile, new SixLabors.ImageSharp.Point(x, y), 1f)); contadorTileMap++; } } return(image.ToBitmap()); } }
public Bitmap Exporte8bpp2D(byte[] imagem, int largura, int altura) { SixLabors.ImageSharp.Image <Rgba32> imagemFinal = new SixLabors.ImageSharp.Image <Rgba32>(largura, altura); using (BinaryReader br = new BinaryReader(new MemoryStream(imagem))) { for (int y = 0; y < imagemFinal.Height; y++) { Span <Rgba32> pixelRowSpan = imagemFinal.GetPixelRowSpan(y); for (int x = 0; x < imagemFinal.Width; x++) { int valorNaPaleta = br.ReadByte(); pixelRowSpan[x] = new Rgba32(CoresPaleta[valorNaPaleta].R, CoresPaleta[valorNaPaleta].G, CoresPaleta[valorNaPaleta].B); } } } return(imagemFinal.ToBitmap()); }