asp.net生成缩略图实现代码

生成缩略图是一个常见的需求,在asp.net中实现也比较简单。可以通过使用System.Drawing命名空间下的Image类来完成生成缩略图的功能。下面分步骤详细讲解如何实现:

步骤一:引用命名空间

using System.Drawing;
using System.Drawing.Imaging;

步骤二:加载图片

首先需要对要生成缩略图的图片进行加载,这里我们以“test.jpg”为例。

string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);

步骤三:计算缩略图的尺寸

在生成缩略图之前需要根据图片的实际尺寸计算生成的缩略图的尺寸,一般情况下可以进行等比例缩放。

// 缩略图最大尺寸
int thumbnailWidth = 100;
int thumbnailHeight = 100;

// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
    thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
    thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}

步骤四:生成缩略图

根据计算得到的缩略图的尺寸生成缩略图。需要注意的是,根据生成的缩略图尺寸,需要设置生成缩略图的质量。

// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
    // 设置缩略图的质量
    EncoderParameters encoderParams = new EncoderParameters(1);
    encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 80L);

    // 保存缩略图
    using (var ms = new MemoryStream())
    {
        thumbnail.Save(ms, ImageFormat.Jpeg);
        byte[] data = ms.ToArray();
        File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail.jpg"), data);
    }
}

以上就是asp.net生成缩略图实现代码的完整攻略。

示例一:生成指定尺寸的缩略图

// 缩略图尺寸
int thumbnailWidth = 150;
int thumbnailHeight = 150;

// 加载图片
string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);

// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
    thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
    thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}

// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
    // 设置缩略图的质量
    EncoderParameters encoderParams = new EncoderParameters(1);
    encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 80L);

    // 保存缩略图
    using (var ms = new MemoryStream())
    {
        thumbnail.Save(ms, ImageFormat.Jpeg);
        byte[] data = ms.ToArray();
        File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail_150x150.jpg"), data);
    }
}

示例二:生成固定质量的缩略图

// 缩略图尺寸
int thumbnailWidth = 200;
int thumbnailHeight = 200;

// 加载图片
string filePath = Server.MapPath("~/images/test.jpg");
Image img = Image.FromFile(filePath);

// 计算缩略图的尺寸
int width = img.Width;
int height = img.Height;
if (width > height)
{
    thumbnailHeight = (int)(height * ((double)thumbnailWidth / width));
}
else
{
    thumbnailWidth = (int)(width * ((double)thumbnailHeight / height));
}

// 生成缩略图
using (Image thumbnail = img.GetThumbnailImage(thumbnailWidth, thumbnailHeight, null, IntPtr.Zero))
{
    // 设置缩略图的质量
    EncoderParameters encoderParams = new EncoderParameters(1);
    encoderParams.Param[0] = new EncoderParameter(Encoder.Quality, 50L);

    // 保存缩略图
    using (var ms = new MemoryStream())
    {
        thumbnail.Save(ms, ImageFormat.Jpeg);
        byte[] data = ms.ToArray();
        File.WriteAllBytes(Server.MapPath("~/images/test_thumbnail_200x200.jpg"), data);
    }
}

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net生成缩略图实现代码 - Python技术站

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

相关文章

  • jQuery Ajax调用WCF服务详细教程

    jQuery Ajax调用WCF服务详细教程 WCF(Windows Communication Foundation)是一种用于构建分布式应用程序的技术。在Web应用程序中,我们可以使用jQuery Ajax调用WCF服务来实现与服务器的通信。本文将详细讲解如何使用jQuery Ajax调用WCF服务,并提供两个示例。 1. 创建WCF服务 以下是创建WC…

    C# 2023年5月15日
    00
  • C# String.LastIndexOf()方法: 查找指定的子字符串在字符串中最后出现的位置

    String.LastIndexOf() 是 C# 中 string 类的一个方法,它用于在字符串中查找指定子字符串(或字符)最后一次出现的位置,并返回其索引。该方法返回的索引值是字符串的起始位置为 0 的位置开始计算的。如果字符串中不存在该子字符串或字符,则返回 -1。 该方法的语法如下: public int LastIndexOf(string val…

    C# 2023年4月19日
    00
  • C#读取系统字体颜色与大小的方法

    下面就来详细讲解一下“C#读取系统字体颜色与大小的方法”的攻略。这个过程我会分为两个步骤来讲解:第一步是读取系统字体的大小,第二步是读取系统字体的颜色。 读取系统字体大小的方法 要读取系统字体的大小,我们可以使用SystemFonts这个类,其包含了许多可以用来读取系统字体的相关信息的静态属性和静态方法。其中,SystemFonts.CaptionFontS…

    C# 2023年6月7日
    00
  • 用几行C#代码实现定时关机/重启(超详细!建议新手练习)

    好的。 在C#中实现定时关机和重启可以使用System.Diagnostics.Process.Start方法来启动cmd命令行,然后通过cmd命令来控制关机和重启的操作。 以下是实现定时关机功能的C#代码: 引入命名空间 using System.Diagnostics; 设置倒计时时间为30秒,即30秒后关机 var shutdownTimeInSeco…

    C# 2023年6月1日
    00
  • C#中如何限制TextBox控件内输入值的范围

    以下是C#中如何限制TextBox控件内输入值的范围的详细攻略: 步骤一:创建一个TextBox控件 首先,我们需要在我们的窗体上创建一个TextBox控件。这可以通过拖动和放置窗体设计器上的文本框控件来完成,或者通过以下代码创建: TextBox textBox1 = new TextBox(); this.Controls.Add(textBox1); …

    C# 2023年6月6日
    00
  • C#实现聊天消息渲染与图文混排详解

    C#实现聊天消息渲染与图文混排详解 在 C# 中,我们可以使用 WinForms 或 WPF 来实现聊天消息渲染和图文混排。本攻略将介绍如何使用 WinForms 或 WPF 实现聊天消息渲染和图文混排,并提供两个示例说明。 WinForms 实现 步骤1:创建 WinForms 应用程序 首先,我们需要创建一个 WinForms 应用程序。可以使用 Vis…

    C# 2023年5月17日
    00
  • 关于C#连接FTP时路径问题的解决方法

    下面是关于C#连接FTP时路径问题的解决方法的完整攻略。 1. 确定FTP服务器根目录 在连接FTP时,首先需要确定FTP服务器的根目录。通常来说,FTP服务器的根目录可能与本地文件系统的根目录不同,因此需要确保路径的正确性。 假设FTP服务器的根目录为/,则需要使用类似于以下的代码来连接FTP服务器: FtpWebRequest request = (Ft…

    C# 2023年5月15日
    00
  • C#实现简易计算器功能(2)(窗体应用)

    C#实现简易计算器功能(2)(窗体应用) 前言 在上一篇教程C#实现简易计算器功能(1)中,我们使用控制台应用程序的方式实现了简易的计算器功能。但是,控制台程序的界面比较简陋,不够直观、美观。在这篇教程中,我们将使用Windows窗体应用程序的方式来实现简易计算器功能,界面将更加直观、友好。 步骤 1. 新建Windows窗体应用程序工程 打开Visual …

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