生成高质量缩略图是很多网站开发者需要解决的问题之一。在 ASP.NET 中高质量缩略图可以通过使用 System.Drawing 命名空间实现。下面是一份完整的 ASP.NET 中生成高质量缩略图攻略,包括代码示例。
步骤1:添加 System.Drawing 引用
生成高质量缩略图需要使用 System.Drawing 命名空间中的方法和类。需要在项目中添加 System.Drawing 引用,可以在项目中的 NuGet 包管理器中搜索 "System.Drawing" 并安装。
步骤2:编写生成缩略图的代码
为了生成高质量且图片比例不失真的缩略图,需要在 System.Drawing 命名空间中使用 Image、Graphics 和 Bitmap 类方法。
以下是一段生成指定大小缩略图的完整代码。假设已经将原始图片放在了名为 "source.jpg" 的文件中:
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public static void GenerateThumbnailImage(string originalImagePath, string thumbnailImagePath, int thumbnailSize)
{
using(Image originalImage = Image.FromFile(originalImagePath))
{
int width, height;
// 计算缩略图尺寸
if (originalImage.Width > originalImage.Height)
{
width = thumbnailSize;
height = originalImage.Height * thumbnailSize/originalImage.Width;
}
else
{
width = originalImage.Width * thumbnailSize/originalImage.Height;
height = thumbnailSize;
}
// 新建一个图像对象
using(Bitmap thumbnailBitmap = new Bitmap(width, height))
{
using(Graphics thumbnailGraph = Graphics.FromImage(thumbnailBitmap))
{
thumbnailGraph.CompositingQuality = CompositingQuality.HighQuality;
thumbnailGraph.SmoothingMode = SmoothingMode.HighQuality;
thumbnailGraph.InterpolationMode = InterpolationMode.HighQualityBicubic;
//调整画布,并设置合适的清晰度和比例
var imageRectangle = new Rectangle(0, 0, width, height);
thumbnailGraph.DrawImage(originalImage, imageRectangle);
//保存缩略图到指定路径
thumbnailBitmap.Save(thumbnailImagePath, ImageFormat.Jpeg);
}
}
}
}
代码注释已经很详细,大致意思是计算缩略图的大小、新建一个缩略图 Bitmap对象、调整画布大小比例、绘制缩略图、保存到指定路径。
步骤3:在ASP.NET网站使用生成缩略图的代码
假设我们需要在 ASP.NET 的上传图片功能中,在用户上传原图完成后,生成指定大小的缩略图并保存在指定的缩略图文件夹中,以下是一段嵌入代码的示例。
<%@ Page Language="C#" %>
<!DOCTYPE html>
<script runat="server">
protected void UploadButton_Click(object sender, EventArgs e)
{
if (FileUpload1.HasFile)
{
//以下代码保存上传的原图片到文件夹中
string originalPath = Server.MapPath("/Upload/original/");
string originalFilename = Path.GetFileName(FileUpload1.FileName);
string originalFilePath = Path.Combine(originalPath, originalFilename);
FileUpload1.SaveAs(originalFilePath);
//以下代码生成指定大小的缩略图,并保存到指定的缩略图文件夹中
string thumbnailPath = Server.MapPath("/Upload/thumbnail/");
string thumbnailFilename = Path.GetFileNameWithoutExtension(FileUpload1.FileName) + ".jpg";
string thumbnailFilePath = Path.Combine(thumbnailPath, thumbnailFilename);
GenerateThumbnailImage(originalFilePath, thumbnailFilePath, 100);
// upload success notification
successNotification.Visible = true;
}
else
{
//upload fail notification
failNotification.Visible = true;
}
}
</script>
<html>
<head>
<title>Upload Example</title>
</head>
<body>
<div>
<h1>Upload Example</h1>
<asp:Label ID="failNotification" runat="server" Text="Upload failed!" Visible="false"></asp:Label>
<asp:Label ID="successNotification" runat="server" Text="Upload successful!" Visible="false"></asp:Label>
<form id="UploadForm" runat="server" enctype="multipart/form-data">
<label>Upload a file:</label>
<asp:FileUpload ID="FileUpload1" runat="server" />
<br />
<asp:Button ID="UploadButton" runat="server" OnClick="UploadButton_Click" Text="Upload" />
</form>
</div>
</body>
</html>
以上示例中,我们首先保存上传的原图到指定的文件夹中,然后再生成指定尺寸、保存到指定路径的缩略图,最后展示上传结果。
结论
在 ASP .NET 中使用 System.Drawing 命名空间中的类和方法可以轻松生成高质量且比例不失真的缩略图。可以使用以上的完整攻略和代码示例来解决您的实际问题。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:ASP.NET中高质量缩略图的生成代码 - Python技术站