From 948a5a3ac8dc66c5350dc3fa011e288d089d3535 Mon Sep 17 00:00:00 2001 From: miku-666 <74728189+NessieHax@users.noreply.github.com> Date: Sun, 2 Apr 2023 18:00:44 +0200 Subject: [PATCH] Imageextentions - Added GraphicsConfig to be used in the Resize Method --- .../Classes/Extentions/ImageExtentions.cs | 21 +++++++++++++------ PCK-Studio/Forms/Utilities/pckCenterOpen.cs | 15 ++++++++++--- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/PCK-Studio/Classes/Extentions/ImageExtentions.cs b/PCK-Studio/Classes/Extentions/ImageExtentions.cs index 5a73613b..6743d1de 100644 --- a/PCK-Studio/Classes/Extentions/ImageExtentions.cs +++ b/PCK-Studio/Classes/Extentions/ImageExtentions.cs @@ -107,7 +107,16 @@ namespace PckStudio.Classes.Extentions return new Size(width, heigh); } - public static Image ResizeImage(this Image image, int width, int height) + public struct GraphicsConfig + { + public CompositingMode CompositingMode { get; set; } + public CompositingQuality CompositingQuality { get; set; } + public InterpolationMode InterpolationMode { get; set; } + public SmoothingMode SmoothingMode {get; set; } + public PixelOffsetMode PixelOffsetMode { get; set; } + } + + public static Image ResizeImage(this Image image, int width, int height, GraphicsConfig graphicsConfig) { var destRect = new Rectangle(0, 0, width, height); var destImage = new Bitmap(width, height); @@ -116,11 +125,11 @@ namespace PckStudio.Classes.Extentions using (var graphics = Graphics.FromImage(destImage)) { - graphics.CompositingMode = CompositingMode.SourceCopy; - graphics.CompositingQuality = CompositingQuality.HighQuality; - graphics.InterpolationMode = InterpolationMode.NearestNeighbor; - graphics.SmoothingMode = SmoothingMode.HighQuality; - graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + graphics.CompositingMode = graphicsConfig.CompositingMode; + graphics.CompositingQuality = graphicsConfig.CompositingQuality; + graphics.InterpolationMode = graphicsConfig.InterpolationMode; + graphics.SmoothingMode = graphicsConfig.SmoothingMode; + graphics.PixelOffsetMode = graphicsConfig.PixelOffsetMode; using (var wrapMode = new ImageAttributes()) { diff --git a/PCK-Studio/Forms/Utilities/pckCenterOpen.cs b/PCK-Studio/Forms/Utilities/pckCenterOpen.cs index beda0468..c16ab9a7 100644 --- a/PCK-Studio/Forms/Utilities/pckCenterOpen.cs +++ b/PCK-Studio/Forms/Utilities/pckCenterOpen.cs @@ -1027,17 +1027,26 @@ namespace PckStudio.Forms { var ms = new MemoryStream(skinTexture.Data); Bitmap saveSkin = new Bitmap(Image.FromStream(ms)); + var config = new ImageExtentions.GraphicsConfig() + { + CompositingMode = CompositingMode.SourceCopy, + CompositingQuality = CompositingQuality.HighQuality, + InterpolationMode = InterpolationMode.NearestNeighbor, + SmoothingMode = SmoothingMode.HighQuality, + PixelOffsetMode = PixelOffsetMode.HighQuality, + }; + if (saveSkin.Width == saveSkin.Height) { - saveSkin.ResizeImage(64, 64); + saveSkin.ResizeImage(64, 64, config); } else if (saveSkin.Height == saveSkin.Width / 2) { - saveSkin.ResizeImage(64, 32); + saveSkin.ResizeImage(64, 32, config); } else { - saveSkin.ResizeImage(64, 64); + saveSkin.ResizeImage(64, 64, config); } saveSkin.Save(root + "/" + skinTexture.Filename, ImageFormat.Png); }