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;
namespace Azylee.Core.DrawingUtils.ImageUtils
{
///
/// 图片操作工具类
///
public static class IMG
{
///
/// 创建缩略图
///
///
///
///
///
///
///
public static Bitmap Thumbnail(Image img, int width, int height,
InterpolationMode interpolation = InterpolationMode.High,
SmoothingMode smoothing = SmoothingMode.HighSpeed)
{
int ow = img.Width;
int oh = img.Height;
//新建一个bmp图片
Bitmap bitmap = new Bitmap(width, height);
//新建一个画板
Graphics g = Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = InterpolationMode.High;
//设置低质量,高速度呈现平滑程度
g.SmoothingMode = SmoothingMode.HighSpeed;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(img, new Rectangle(0, 0, width, height), new Rectangle(0, 0, ow, oh), GraphicsUnit.Pixel);
return bitmap;
}
///
/// 压缩图片
///
///
/// 0-100
///
///
public static byte[] Compression(Bitmap bitmap, int quality)
{
try
{
ImageFormat format = ImageFormat.Jpeg;
//获取图像编码解码器
ImageCodecInfo CodecInfo = null;
ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders();
foreach (ImageCodecInfo codec in codecs)
if (codec.FormatID == format.Guid) CodecInfo = codec;
//转换图片质量
if (CodecInfo != null)
{
System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality;
EncoderParameters myEncoderParameters = new EncoderParameters(1);
EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, quality);
myEncoderParameters.Param[0] = myEncoderParameter;
using (MemoryStream ms = new MemoryStream())
{
bitmap.Save(ms, CodecInfo, myEncoderParameters);
myEncoderParameters.Dispose();
myEncoderParameter.Dispose();
return ms.ToArray();
}
}
}
catch { }
return null;
}
}
}