📄 drawmark.cs
字号:
using System;
using System.IO;
using System.Drawing;
using System.Drawing.Drawing2D;
/// <summary>
/// 图片生成水印效果
/// </summary>
public class DrawMark
{
#region 变量声明
/// <summary>
/// 表示水印图片位置的枚举
/// </summary>
public enum Location
{
/// <summary>
/// 水印位于源图片左上角
/// </summary>
LeftTop,
/// <summary>
/// 水印位于源图片左下角
/// </summary>
LeftBottom,
/// <summary>
/// 水印位于源图片右上角
/// </summary>
RightTop,
/// <summary>
/// 水印位于源图片右下角
/// </summary>
RightBottom,
/// <summary>
/// 水印位于源图片中间
/// </summary>
Middle
}
#endregion
#region 获取图片
/// <summary>
/// 将水印填充到指定的图片
/// </summary>
/// <param name="ImagePath">设置源图片路径。</param>
/// <param name="MarkPath">设置水印图片路径。</param>
/// <param name="Locus">设置一个值,该值表示水印位于源图片的位置。</param>
/// <returns></returns>
public bool GetImage(string ImagePath, string MarkPath, Location Locus)
{
File.Copy(ImagePath, ImagePath + ".bak");
File.Delete(ImagePath);
Image OriginalImage = Image.FromFile(ImagePath + ".bak");
Image CopyImage = Image.FromFile(MarkPath);
if (OriginalImage.Width > CopyImage.Width && OriginalImage.Height > CopyImage.Height)
{
Graphics g = Graphics.FromImage(OriginalImage);
g.CompositingQuality = CompositingQuality.HighQuality;
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.SmoothingMode = SmoothingMode.HighQuality;
int x, y;
switch (Locus)
{
case Location.LeftTop:
x = 0;
y = 0;
break;
case Location.LeftBottom:
x = 0;
y = OriginalImage.Height - CopyImage.Height;
break;
case Location.RightTop:
x = OriginalImage.Width - CopyImage.Width;
y = 0;
break;
case Location.RightBottom:
x = OriginalImage.Width - CopyImage.Width;
y = OriginalImage.Height - CopyImage.Height;
break;
case Location.Middle:
x = (OriginalImage.Width - CopyImage.Width) / 2;
y = (OriginalImage.Height - CopyImage.Height) / 2;
break;
default:
x = OriginalImage.Width - CopyImage.Width;
y = OriginalImage.Height - CopyImage.Height;
break;
}
g.DrawImage(CopyImage, new Rectangle(x, y, CopyImage.Width, CopyImage.Height), 0, 0, CopyImage.Width, CopyImage.Height, GraphicsUnit.Pixel);
g.Dispose();
OriginalImage.Save(ImagePath);
OriginalImage.Dispose();
CopyImage.Dispose();
File.Delete(ImagePath + ".bak");
return true;
}
else
{
OriginalImage.Dispose();
CopyImage.Dispose();
File.Delete(ImagePath + ".bak");
return false;
}
}
/// <summary>
/// 获取图片缩略图
/// </summary>
/// <param name="ImagePath">设置源图片路径。</param>
/// <param name="width">设置一个值,该值表示缩略图的宽度。</param>
public void GetSmallImage(string ImagePath, int width)
{
File.Copy(ImagePath, ImagePath + ".bak");
File.Delete(ImagePath);
Image OriginalImage = Image.FromFile(ImagePath + ".bak");
Image ThumbnailImage = OriginalImage.GetThumbnailImage(width, Convert.ToInt32(width * 0.75), null, IntPtr.Zero);
ThumbnailImage.Save(ImagePath);
OriginalImage.Dispose();
ThumbnailImage.Dispose();
File.Delete(ImagePath + ".bak");
}
#endregion
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -