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日

相关文章

  • C#正则表达式Regex类的用法

    C#正则表达式(Regex)是一个用来匹配字符串模式的工具,它可以比较方便地用于处理文本、验证输入数据、提取数据等。在C#中,有一个表示正则表达式的Regex类,它提供了许多方法可以用来处理文本。下面我们一起来详细讲解C#正则表达式Regex类的用法。 正则表达式的基本语法 在使用C#正则表达式Regex类之前,我们需要先学习一些正则表达式的基本语法。下面是…

    C# 2023年6月7日
    00
  • C#中使用CliWrap让命令行交互举重若轻

    CLIWrap是一个C#库,它允许我们在C#代码中调用命令行工具(例如,FFmpeg,ImageMagick等),并简化与这些命令行工具的交互。以下是使用CliWrap的C#代码,用于从命令行执行ffmpeg: using CliWrap; using CliWrap.Models; using System; using System.IO; using …

    C# 2023年6月3日
    00
  • C#实现的SN快速输入工具实例

    C#实现的SN快速输入工具实例 本文将详细讲解如何使用C#语言实现一个SN快速输入工具。在过程中,我们会使用到C# WinForm应用程序的知识,涉及到处理键盘事件、剪贴板操作、字符串处理等技术。 示例说明 在这个示例中,我们将实现一个快速输入工具,用户可以通过输入预设好的SN码来快速填写表格中的SN信息。例如,当用户在键盘上输入“SN001”,工具会自动将…

    C# 2023年6月6日
    00
  • 基于C#解决库存扣减及订单创建时防止并发死锁的问题

    首先需要明确的是,在高并发情况下,库存扣减和订单创建操作可能会引发数据不一致的问题,例如出现超卖的情况。为了避免发生这种情况,需要对库存扣减及订单创建进行并发控制。 在C#平台下,可以利用锁机制来进行并发控制。具体实现方式如下: 对库存扣减与订单创建的关键代码块(例如数据库操作)加锁,确保同时只有一个线程能够访问该关键代码块。这可以使用C#语言中的lock关…

    C# 2023年5月14日
    00
  • C#实现MySQL命令行备份和恢复

    下面是详细讲解“C#实现MySQL命令行备份和恢复”的完整攻略。 简介 在MySQL中,备份数据和恢复数据都是非常重要的操作,它们能够保证数据在遭遇意外情况时的安全,帮助我们从容应对可能出现的数据丢失、损坏等问题。这里,我们将通过C#来实现MySQL的备份和恢复操作。 备份MySQL数据 步骤一:安装MySQL命令行工具 在开始备份之前,我们需要先安装MyS…

    C# 2023年6月2日
    00
  • C#中使用CAS实现无锁算法的示例详解

    下面是“C#中使用CAS实现无锁算法的示例详解”的完整攻略。 什么是CAS CAS(Compare And Swap)即比较并替换,是一种用来实现无锁算法的原子操作。它将内存中的旧值和一个期望的新值进行比较,如果相同则将新值写入内存,否则不做操作。CAS 操作可以避免因多线程竞争而引起的数据不一致性问题,因此在多线程编程中被广泛应用。 C# 中使用 CAS …

    C# 2023年6月1日
    00
  • .net4.5使用async和await异步编程实例

    .NET4.5使用async和await异步编程实例攻略 1. 什么是异步编程 在单线程程序中,当某个任务需要较长的时间才能完成时,程序会一直等待该任务完成后才能继续执行下面的代码,这会导致程序的执行效率变低,用户体验不佳。 异步编程通过将耗时操作放入另外的线程中处理,让主线程继续执行其他任务,从而提高程序的执行效率,改善用户体验。 2. async和awa…

    C# 2023年5月31日
    00
  • jquery+ajax+C#实现无刷新操作数据库数据的简单实例

    下面我将为你详细讲解“jquery+ajax+C#实现无刷新操作数据库数据的简单实例”的完整攻略。 1. 准备工作 在开始前,你需要先准备好以下工作: 一台装有IIS、SQL Server等环境的Windows服务器。 一份C#项目,其中包含与数据库交互的代码。 一个HTML页面,用于调用Ajax和展示数据。 2. 实现步骤 2.1 配置Web.config…

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