Imageextentions - Added GraphicsConfig to be used in the Resize Method

This commit is contained in:
miku-666
2023-04-02 18:00:44 +02:00
parent 5ee36b520d
commit 948a5a3ac8
2 changed files with 27 additions and 9 deletions

View File

@@ -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())
{

View File

@@ -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);
}