ASP.NET中高质量缩略图的生成代码

生成高质量缩略图是很多网站开发者需要解决的问题之一。在 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技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • javascript数据类型中的一些小知识点(推荐)

    JavaScript数据类型中的一些小知识点 JavaScript是一种弱类型语言,其数据类型种类较多,包括基本数据类型和引用数据类型。本文将详细介绍JavaScript数据类型中的一些小知识点。 基本数据类型 字符串类型(String) 在JavaScript中,字符串类型是指包含有连续字符序列的值,其值需要使用单引号、双引号或反引号来表示。字符串类型的值…

    C# 2023年6月8日
    00
  • .NetCore利用BlockingCollection实现简易消息队列

    .NET Core利用BlockingCollection实现简易消息队列 在.NET Core应用程序中,我们可以使用BlockingCollection类来实现简易消息队列。本攻略将详细介绍如何使用BlockingCollection类来实现简易消息队列,并提供两个示例说明。 BlockingCollection类 BlockingCollection类…

    C# 2023年5月17日
    00
  • C#版ftp方法实现类的代码

    C#版ftp方法实现类的代码可以通过使用C#的FTP类库完成。FTP,即File Transfer Protocol(文件传输协议),是一种网络协议,用于在服务器和客户端之间传输文件。C#通过FTP类库实现FTP操作非常方便。这里我们将详细讲解如何实现C#版的FTP方法实现类。 基本原理 FTP客户端通过FTP协议连接FTP服务器,进行文件上传、下载、删除、…

    C# 2023年6月6日
    00
  • C# Xamarin利用ZXing.Net.Mobile进行扫码的方法

    以下是C# Xamarin利用ZXing.Net.Mobile进行扫码的方法的完整攻略: 1. ZXing.Net.Mobile的介绍 1.1 什么是ZXing.Net.Mobile ZXing.Net.Mobile是一款基于ZXing的二维码扫描框架,支持多种平台,包括Xamarin.Android、Xamarin.iOS、Windows Phone、Wi…

    C# 2023年6月3日
    00
  • C#交错数组用法实例

    C#交错数组用法实例 交错数组(Jagged Arrays)也称为不规则数组,是一种多维数组,其每个元素都是一个可以是不同长度的一维数组。在C#中,可以使用交错数组来存储数据。以下是交错数组的定义方式: data_type[][] array_name = new data_type[outerLength][]; 其中,data_type指定数组元素类型,…

    C# 2023年6月7日
    00
  • .NET Core使用Worker Service创建服务

    .NET Core是一个面向现代应用程序的跨平台开源框架,支持Windows、Linux和Mac等多种操作系统。在.NET Core中,Worker Service是一个用于开发长时间运行Windows服务、Linux daemon、控制台应用程序的框架,通常用于后台处理任务、服务监控和数据同步等场景。下面是使用Worker Service创建服务的完整攻略…

    C# 2023年6月3日
    00
  • C# lambda表达式原理定义及实例详解

    C# lambda表达式原理定义及实例详解 1. 什么是lambda表达式 Lambda表达式是一种能够把代码作为一个参数传递的匿名函数。它是从LISP借鉴过来的一个概念,相当于是在代码里面定义一个函数,然后直接把这个函数作为一个参数传递给另一个函数,简化了代码的书写。在C#中,Lambda表达式是Func<>或Action<> 或 …

    C# 2023年6月7日
    00
  • asp.net core实体类生产CRUD后台管理界面

    ASP.NET Core 实体类生成 CRUD 后台管理界面 ASP.NET Core 实体类生成 CRUD 后台管理界面是一种常见的操作。本攻略将介绍如何使用 ASP.NET Core 实体类生成 CRUD 后台管理界面。 步骤 以下是使用 ASP.NET Core 实体类生成 CRUD 后台管理界面的步骤: 安装 Scaffold-DbContext 工…

    C# 2023年5月17日
    00
合作推广
合作推广
分享本页
返回顶部