using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; namespace TilemapRemoveBorderTW { class Program { static void Main(string[] args) { if (args == null || args.Length < 1) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Provide a path to your tileset! (Better just drag your image on the .exe file, ez)"); Console.ReadKey(); return; } Image tilesetImage = Image.FromFile(args[0]); if (tilesetImage == null) { ShowError("No file found or error reading the file"); return; } Bitmap tileset = new Bitmap(tilesetImage); int size = tileset.Width / 16; int newSize = size - 4; int heightCount = tileset.Height / size; Bitmap newTileset = new Bitmap(newSize * 16, newSize * heightCount); for (int x = 0; x < 16; x++) { for (int y = 0; y < heightCount; y++) { Bitmap tile = new Bitmap(newSize, newSize); Rectangle rect = new Rectangle(x * size + 2, y * size + 2, size - 4, size - 4); Rectangle destRect = new Rectangle(x * newSize, y * newSize, newSize, newSize); CopyRegionIntoImage(tileset, rect, ref newTileset, destRect); } } tileset.Save("fixed.png", ImageFormat.Png); Console.ForegroundColor = ConsoleColor.Green; Console.WriteLine("Tileset border removed. Look for the fixed.png file in the same directory as this .exe file"); Console.ReadKey(); } private static void CopyRegionIntoImage(Bitmap srcBitmap, Rectangle srcRegion, ref Bitmap destBitmap, Rectangle destRegion) { using (Graphics grD = Graphics.FromImage(destBitmap)) { grD.DrawImage(srcBitmap, destRegion, srcRegion, GraphicsUnit.Pixel); } } private static Bitmap ResizeImage(Image image, int width, int height) { var destRect = new Rectangle(0, 0, width, height); var destImage = new Bitmap(width, height); destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); using (var graphics = Graphics.FromImage(destImage)) { graphics.CompositingMode = CompositingMode.SourceCopy; graphics.CompositingQuality = CompositingQuality.HighQuality; graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; graphics.SmoothingMode = SmoothingMode.HighQuality; graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; using (var wrapMode = new ImageAttributes()) { wrapMode.SetWrapMode(WrapMode.TileFlipXY); graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); } } return destImage; } private static void ShowError(string message) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine(message); Console.ReadKey(); } } }