DrawingPack v 1.0.1.0

Hcf Drawing 图像处理组件,封装Windows下基于System.Drawing.Common,Linux下基于SkiaSharp的图像封装实现


用法

通过nuget引用 Hcf.Drawing 程序集

Install-Package HcfNet.Drawing

使用DrawingPack包

services.AddPack<DrawingPack>();

获取IImageHandle实例

var imageHandle = provider.GetService<IImageHandle>();


示例

创建缩略图

/// <summary>
/// 创建缩略图
/// </summary>
/// <param name="oriFileName">原始文件名称</param>
/// <param name="targetFileName">目标文件名称</param>
/// <param name="width">缩略图宽度</param>
/// <param name="height">缩略图高度</param>
void CreateThumbnail(string oriFileName, string targetFileName, int width, int height);
/// <summary>
/// 创建缩略图
/// </summary>
/// <param name="stream">原始文件流</param>
/// <param name="targetFileName">目标文件名称</param>
/// <param name="height">高度</param>
/// <param name="width">宽度</param>
void CreateThumbnail(FileStream stream, string targetFileName, int width, int height);


获取图片尺寸

/// <summary>
/// 获取文件尺寸
/// </summary>
/// <param name="fileName">文件名称</param>
/// <returns></returns>
Tuple<int, int> GetImageSize(string fileName);
/// <summary>
/// 获取文件尺寸
/// </summary>
/// <param name="stream">文件流</param>
/// <returns></returns>
Tuple<int, int> GetImageSize(FileStream stream);


保存图片

/// <summary>
/// 保存图片
/// </summary>
/// <param name="bytes">图片字节</param>
/// <param name="fileName">保存地址</param>
/// <param name="type">文件类型</param>
/// <param name="quality">图片质量,0~100</param>
void Save(byte[] bytes, string fileName, ImageTypeFormat type, int quality = 100);
/// <summary>
/// 保存图片
/// </summary>
/// <param name="stream">图片流</param>
/// <param name="fileName">保存地址</param>
/// <param name="type">文件类型</param>
/// <param name="quality">图片质量,0~100</param>
void Save(Stream stream, string fileName, ImageTypeFormat type, int quality = 100);


扩展

Bitmap扩展,只支持Windows平台

/// <summary>
/// 将Bitmap转换为Byte[]
/// </summary>
/// <param name="bmp">待处理的图像</param>
/// <returns></returns>
public static byte[] ToBytes(this Bitmap bmp)
/// <summary>
/// 将Bitmap转换为Base64字符串
/// </summary>
/// <param name="bmp">待处理的图像</param>
/// <returns></returns>
public static string ToBase64(this Bitmap bmp)
/// <summary>
/// 按指定百分比缩放图像
/// </summary>
/// <param name="bmp">待处理的图像</param>
/// <param name="percent">缩放百分比(小数)</param>
/// <param name="model">图像质量模式</param>
/// <returns> 缩放后的图像 </returns>
public static Bitmap Zoom(this Bitmap bmp, double percent, InterpolationMode model = InterpolationMode.Default)


验证码图片

Window平台

public IActionResult GetValidateCode()
{
    ValidateCoder validateCoder = new ValidateCoder();
    validateCoder.RandomColor = true;
    validateCoder.RandomItalic = true;
    validateCoder.RandomLineCount = 4;
    validateCoder.RandomPosition = true;
    string code = validateCoder.GetCode(4);
    Bitmap bitmap = validateCoder.CreateImage(code, ValidateCodeType.NumberAndLetter);

    HttpContext.Session.SetString("ValidateCode", code);

    return File(bitmap.ToBytes(), "image/jpg");

}


Windows、Linux平台

public IActionResult GetValidateCode()
{
    var validateCodeProvider = new SkiaSharpValidateCoder();
    validateCodeProvider.SetWith = 126;
    validateCodeProvider.SetHeight = 38;
    validateCodeProvider.SetFontSize = 20;

    var bytes = validateCodeProvider.GetVerifyCodeImage();
    var code = validateCodeProvider.SetVerifyCodeText;

    HttpContext.Session.SetString("ValidateCode", code);
    return File(bytes, "image/jpg");
}


参数信息