asp.net实现生成缩略图及加水印的方法示例

在Web开发中,常常需要对上传的图片进行处理,例如生成缩略图和添加水印等。下面介绍一种使用ASP.NET实现图片处理的方法,包括生成缩略图和添加水印功能。

1. 生成缩略图

在ASP.NET中,可以使用System.Drawing命名空间中的Image类和Graphics类实现对图片的处理。生成缩略图常常需要指定缩略图的宽度和高度。下面是一个生成缩略图的方法:

public static void GenerateThumbnail(string sourceImagePath, string thumbnailPath, int width, int height)

{

using (var sourceImage = Image.FromFile(sourceImagePath))

{

int sourceWidth = sourceImage.Width;

int sourceHeight = sourceImage.Height;

float sourceRatio = (float)sourceWidth / sourceHeight;

float thumbnailRatio = (float)width / height;

int thumbnailWidth, thumbnailHeight;

if (sourceRatio > thumbnailRatio)

{

thumbnailWidth = width;

thumbnailHeight = (int)(width / sourceRatio);

}

else

{

thumbnailWidth = (int)(height * sourceRatio);

thumbnailHeight = height;

}

using (var thumbnailImage = new Bitmap(thumbnailWidth, thumbnailHeight))

{

using (var graphics = Graphics.FromImage(thumbnailImage))

{

graphics.SmoothingMode = SmoothingMode.AntiAlias;

graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;

graphics.PixelOffsetMode = PixelOffsetMode.HighQuality;

graphics.DrawImage(sourceImage, new Rectangle(0, 0, thumbnailWidth, thumbnailHeight));

thumbnailImage.Save(thumbnailPath, sourceImage.RawFormat);

}

}

}

}

这个方法的参数sourceImagePath和thumbnailPath分别表示源图片的路径和缩略图的路径,width和height分别表示缩略图的宽度和高度。在方法中创建了源图片(sourceImage)和缩略图(thumbnailImage)的实例,使用Graphics类对图片进行处理,最后保存缩略图到指定路径中。

1.1 示例

以下是一个调用上述方法的示例,生成宽度为200像素、高度为150像素的缩略图:

var sourceImagePath = "source.jpg";

var thumbnailPath = "thumbnail.jpg";

int width = 200;

int height = 150;

GenerateThumbnail(sourceImagePath, thumbnailPath, width, height);

2. 添加水印

添加水印是另一种常见的图片处理需求。在ASP.NET中,可以使用Graphics类绘制文本或图像作为水印。下面是添加文字水印的方法:

public static void AddTextWatermark(string sourceImagePath, string watermarkedImagePath, string watermarkText)

{

using (var sourceImage = Image.FromFile(sourceImagePath))

{

using (var graphics = Graphics.FromImage(sourceImage))

{

Font font = new Font("Arial", 20, FontStyle.Bold, GraphicsUnit.Pixel);

SizeF textSize = graphics.MeasureString(watermarkText, font);

float x = (float)sourceImage.Width - textSize.Width - 10;

float y = (float)sourceImage.Height - textSize.Height - 10;

graphics.DrawString(watermarkText, font, Brushes.White, x, y);

}

sourceImage.Save(watermarkedImagePath, sourceImage.RawFormat);

}

}

这个方法的参数sourceImagePath和watermarkedImagePath分别表示源图片的路径和添加水印后的图片路径,watermarkText表示水印文字。方法中创建源图片(sourceImage)的实例,使用Graphics类在图片上添加水印,最后保存加了水印的图片到指定路径中。

2.1 示例

以下是一个调用上述方法的示例,添加了一个文本水印:

var sourceImagePath = "source.jpg";

var watermarkedImagePath = "watermarked.jpg";

string watermarkText = "Example.com";

AddTextWatermark(sourceImagePath, watermarkedImagePath, watermarkText);

除了添加文字水印外,还可以添加图像水印。下面是添加图像水印的方法:

public static void AddImageWatermark(string sourceImagePath, string watermarkedImagePath, string watermarkImagePath)

{

using (var sourceImage = Image.FromFile(sourceImagePath))

{

using (var watermarkImage = Image.FromFile(watermarkImagePath))

{

int x = sourceImage.Width - watermarkImage.Width - 10;

int y = sourceImage.Height - watermarkImage.Height - 10;

using (var graphics = Graphics.FromImage(sourceImage))

{

graphics.DrawImage(watermarkImage, new Rectangle(x, y, watermarkImage.Width, watermarkImage.Height),

0, 0, watermarkImage.Width, watermarkImage.Height, GraphicsUnit.Pixel);

}

}

sourceImage.Save(watermarkedImagePath, sourceImage.RawFormat);

}

}

这个方法的参数sourceImagePath和watermarkedImagePath分别表示源图片的路径和添加水印后的图片路径,watermarkImagePath表示水印图片的路径。方法中创建源图片(sourceImage)和水印图片(watermarkImage)的实例,使用Graphics类在源图片上添加水印图片,最后保存加了水印的图片到指定路径中。

2.2 示例

以下是一个调用上述方法的示例,添加了一个图像水印:

var sourceImagePath = "source.jpg";

var watermarkedImagePath = "watermarked.jpg";

string watermarkImagePath = "watermark.png";

AddImageWatermark(sourceImagePath, watermarkedImagePath, watermarkImagePath);

通过上述方法,可以在ASP.NET应用中方便地处理图片,生成缩略图和添加水印等功能。

后端开发标签