1
0
mirror of https://github.com/SoftEtherVPN/SoftEtherVPN.git synced 2025-04-03 18:00:08 +03:00
SoftEtherVPN/src/BuildUtil/CoreUtil/Bmp.cs

118 lines
2.8 KiB
C#

// CoreUtil
using System;
using System.Threading;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using System.Text;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Diagnostics;
using System.Web.Mail;
using System.Net;
using System.Net.Sockets;
using System.Net.NetworkInformation;
using System.Runtime.InteropServices;
namespace CoreUtil
{
public static class Bmp
{
public static Bitmap Load(string filename)
{
return Load(IO.ReadFile(filename));
}
public static Bitmap Load(byte[] data)
{
MemoryStream ms = new MemoryStream();
ms.Write(data, 0, data.Length);
ms.Seek(0, SeekOrigin.Begin);
return new Bitmap(ms);
}
public static void SaveAsBitmap(Bitmap bmp, string filename)
{
IO.SaveFile(filename, SaveAsBitmap(bmp));
}
public static byte[] SaveAsBitmap(Bitmap bmp)
{
MemoryStream ms = new MemoryStream();
bmp.Save(ms, ImageFormat.Bmp);
return ms.ToArray();
}
public static void SaveAsJpeg(Bitmap bmp, string filename)
{
IO.SaveFile(filename, SaveAsJpeg(bmp));
}
public static byte[] SaveAsJpeg(Bitmap bmp)
{
return SaveAsJpeg(bmp, 100);
}
public static void SaveAsJpeg(Bitmap bmp, string filename, int quality)
{
IO.SaveFile(filename, SaveAsJpeg(bmp, quality));
}
public static byte[] SaveAsJpeg(Bitmap bmp, int quality)
{
EncoderParameters eps = new EncoderParameters(1);
EncoderParameter ep = new EncoderParameter(System.Drawing.Imaging.Encoder.Quality, quality);
eps.Param[0] = ep;
ImageCodecInfo info = getEncoderInfo("image/jpeg");
MemoryStream ms = new MemoryStream();
bmp.Save(ms, info, eps);
return ms.ToArray();
}
static ImageCodecInfo getEncoderInfo(string type)
{
ImageCodecInfo[] encs = ImageCodecInfo.GetImageEncoders();
foreach (ImageCodecInfo enc in encs)
{
if (Str.StrCmpi(enc.MimeType, type))
{
return enc;
}
}
return null;
}
public static Bitmap ResizeBitmap(Bitmap bmp, int width, int height)
{
Bitmap dst = new Bitmap(width, height, PixelFormat.Format24bppRgb);
Graphics g = Graphics.FromImage(dst);
g.SmoothingMode = SmoothingMode.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
Rectangle r = new Rectangle(0, 0, width, height);
g.DrawImage(bmp, r);
return dst;
}
}
}