CodeCarvings.Piczard 组件
这个组件比较强大但是接口不太友好
NuGet 安装
Install-Package CodeCarvings.Piczard
生成缩略图
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//加入缩略图过滤器并设置缩放大小至200x200
job.Filters.Add(new FixedResizeConstraint(200, 200));
//读取指定路径的图片文件生成缩略图保存到指定路径
job.SaveProcessedImageToFileSystem(@"Images\原图.png", @"Images\缩略图.png");
加水印
加文字水印
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//文字水印对象
var textWater = new TextWatermark
{
//水印文字
Text = "这个是文字水印!",
//文字颜色
ForeColor = Color.Red,
//水印位置
ContentAlignment = ContentAlignment.TopRight,
//字体信息
Font =
{
//字体大小
Size = 24,
//字体名称
Name = "微软雅黑"
}
};
//加入过滤器对象
job.Filters.Add(textWater);
//读取指定路径的图片文件生成水印图保存到指定路径
job.SaveProcessedImageToFileSystem(@"Images\原图.png", @"Images\加文字水印.png");
加图片水印
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//图片水印过滤器对象【输入水印图路径】
var imageWatermark = new ImageWatermark(@"Images\水印图.png")
{
//不透明度0~100
Alpha = 60,
//水印图位置
ContentAlignment = ContentAlignment.TopRight
};
//加入过滤器对象
job.Filters.Add(imageWatermark);
//读取指定路径的图片文件生成水印图保存到指定路径
job.SaveProcessedImageToFileSystem(@"Images\原图.png", @"Images\加图片水印.png");
封装的扩展方法
扩展方法代码
public static class CommonHelper
{
#region 生成缩略图、加水印
/// <summary>
/// 生成缩略图
/// </summary>
/// <param name="image">生成的图像</param>
/// <param name="width">生成的缩略图宽度</param>
/// <param name="height">生成的缩略图高度</param>
/// <returns>缩略图对象</returns>
public static Image BuilderThumbnail(this Image image, int width, int height)
{
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//设置缩略图大小
job.Filters.Add(new FixedResizeConstraint(width, height));
return job.GetProcessedImage(image);
}
/// <summary>
/// 生成文字水印
/// </summary>
/// <param name="image">需要加入水印的图片</param>
/// <param name="text">水印文字</param>
/// <param name="alignment">水印位置</param>
/// <param name="fontSize">水印文字大小</param>
/// <param name="fontColor">字体颜色</param>
/// <param name="fontName">字体名称</param>
/// <returns>生成的图像</returns>
public static Image BuilderTextWatermark(this Image image, string text,
ContentAlignment alignment = ContentAlignment.TopRight, float? fontSize = null, Color? fontColor = null,
string fontName = null)
{
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//创建文字水印对象
var textWatermark = new TextWatermark(text, alignment);
if (fontSize.HasValue)
//设置字体大小
textWatermark.Font.Size = fontSize.Value;
if(fontColor.HasValue)
//设置字体颜色
textWatermark.ForeColor = fontColor.Value;
if (!string.IsNullOrWhiteSpace(fontName))
//设置字体名称
textWatermark.Font.Name = fontName;
//加入文字水印
job.Filters.Add(textWatermark);
//生成加入了文件水印的图片
return job.GetProcessedImage(image);
}
/// <summary>
/// 生成图片水印
/// </summary>
/// <param name="image">需要加入水印的图片</param>
/// <param name="watermarkImage">水印图片</param>
/// <param name="alignment">水印位置</param>
/// <param name="translucence">不透明度0%~100%</param>
/// <returns>生成了水印的图片</returns>
public static Image BuilderImageWatermark(this Image image, Image watermarkImage,
ContentAlignment alignment = ContentAlignment.TopRight, int translucence = 100)
{
//图像处理对象
ImageProcessingJob job = new ImageProcessingJob();
//图片缩略图对象
ImageWatermark imageWatermark = new ImageWatermark(watermarkImage, alignment)
{
Alpha = Math.Min(Math.Max(translucence, 0), 100) //设置透明度0~100
};
//加入图片缩略图对象
job.Filters.Add(imageWatermark);
//生成加入缩略图的图片对象并返回
return job.GetProcessedImage(image);
}
#endregion
}
DEMO代码
生成缩略图
using (var image = Image.FromFile(@"Images\原图.png"))
{
using (var newImage = image.BuilderThumbnail(200, 200))
{
newImage.Save(@"Images\缩略图.png");
}
}
加文字水印
using (var image = Image.FromFile(@"Images\原图.png"))
{
using (var newImage = image.BuilderTextWatermark("这个是水印信息!", ContentAlignment.TopRight, 36, Color.Red, "微软雅黑"))
{
newImage.Save(@"Images\加文字水印.png");
}
}
加图片水印
using (var image = Image.FromFile(@"Images\原图.png"))
{
using (var watermarkImage = Image.FromFile(@"Images\水印图.png"))
{
using (var newImage = image.BuilderImageWatermark(watermarkImage, ContentAlignment.TopRight, 60))
{
newImage.Save(@"Images\加图片水印.png");
}
}
}