47 lines
1.3 KiB
C#
47 lines
1.3 KiB
C#
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Drawing;
|
|||
|
using System.Drawing.Drawing2D;
|
|||
|
using System.Drawing.Imaging;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Mesen.GUI.Config
|
|||
|
{
|
|||
|
public static class ImageExtensions
|
|||
|
{
|
|||
|
public static byte[] ToByteArray(this Image image, ImageFormat format)
|
|||
|
{
|
|||
|
using(MemoryStream ms = new MemoryStream()) {
|
|||
|
image.Save(ms, format);
|
|||
|
return ms.ToArray();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public static Image ResizeImage(this 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;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|