C#实现的上传图片、保存图片、加水印、生成缩略图功能示例

下面就是详细讲解“C#实现的上传图片、保存图片、加水印、生成缩略图功能示例”的完整攻略。

前言

在网站的开发过程中,图片处理是非常重要的一环。在C#语言中,我们可以利用System.Drawing命名空间中的类和方法来实现上传图片、保存图片、加水印、生成缩略图等功能。下面将分别对这几个功能进行详细介绍。

上传图片

在C#中,可以利用System.Web命名空间中的HttpPostedFile类实现图片的上传。具体步骤如下:

  1. 在前端页面中添加一个<input type="file">元素,用于选择要上传的图片。

  2. 在服务器端获取上传的图片文件,可以通过如下代码实现:

HttpPostedFile postedFile = Request.Files["file"];
if (postedFile != null && postedFile.ContentLength > 0)
{
    // 保存文件到服务器
    string fileName = Path.GetFileName(postedFile.FileName);
    string filePath = Server.MapPath("~/Uploads/" + fileName);
    postedFile.SaveAs(filePath);
}

其中,Request.Files["file"]表示获取前端发送过来的名字为file的文件数据。Path.GetFileNameServer.MapPath方法分别用来获取上传文件的文件名和文件路径。最后,利用postedFile.SaveAs方法将文件保存到服务器的指定路径中。

  1. 在保存文件之前,还需要判断用户上传的文件是否为图片文件。可以通过postedFile.ContentType来获取文件的MIME类型,如果不是图片文件,就不能保存到服务器了。
if (postedFile.ContentType.ToLower().IndexOf("image") < 0)
{
    return;
}

综上,利用以上代码就可以实现图片的上传功能了。

保存图片

在程序中,我们有时需要对图片进行处理,比如添加水印、生成缩略图等。在处理完图片之后,需要将处理后的图片保存到服务器,可以通过如下代码实现:

Bitmap bitmap = new Bitmap(Server.MapPath("~/Images/1.jpg"));
Graphics graphics = Graphics.FromImage(bitmap);
// 对图像进行处理
...
// 保存图像
bitmap.Save(Server.MapPath("~/Images/1.jpg"), ImageFormat.Jpeg);

其中,Bitmap类表示要操作的图片对象,Graphics类表示要对图片进行的操作(比如添加水印、生成缩略图),ImageFormat.Jpeg表示生成的图片格式。最后通过bitmap.Save方法保存处理后的图像。

加水印

在C#中,可以通过如下代码实现图片加水印的功能:

Bitmap bitmap = new Bitmap(Server.MapPath("~/Images/1.jpg"));
Graphics graphics = Graphics.FromImage(bitmap);
graphics.DrawString("测试水印", new Font("微软雅黑", 12), Brushes.Red, new PointF(10, 10));
bitmap.Save(Server.MapPath("~/Images/1.jpg"), ImageFormat.Jpeg);

其中,DrawString方法将字符串“测试水印”绘制在图片上,Font表示字体、字号等信息,Brushes.Red表示字体颜色,PointF表示水印起始坐标。最终通过bitmap.Save方法保存加水印的图片。

生成缩略图

在C#中,可以利用System.Drawing.Image类的GetThumbnailImage方法实现生成缩略图的功能。具体步骤如下:

  1. 读取原始图片
Image image = Image.FromFile(Server.MapPath("~/Images/1.jpg"));
  1. 调用GetThumbnailImage方法生成缩略图
Image thumbImage = image.GetThumbnailImage(100, 100, null, IntPtr.Zero);

其中,100, 100表示生成的缩略图的宽度和高度。

  1. 保存缩略图
thumbImage.Save(Server.MapPath("~/Images/1_thumb.jpg"), ImageFormat.Jpeg);

综上,利用以上代码就可以实现生成缩略图的功能了。

结语

本文详细介绍了C#实现的上传图片、保存图片、加水印、生成缩略图等功能的攻略。希望本文能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现的上传图片、保存图片、加水印、生成缩略图功能示例 - Python技术站

(0)
上一篇 2023年6月1日
下一篇 2023年6月1日

相关文章

  • C#基础语法:as 运算符使用实例

    C#基础语法:as运算符使用实例 在C#中,as运算符可用于将对象转换为特定类型或空类型。它与其他类型转换操作符(如强制转换操作符和is运算符)不同,因为它对转换失败的结果返回null值而不是引发异常。在本篇文章中,我们将讲解as运算符的详细用法,并提供示例代码。 为什么要使用as运算符? 在C#中,如果您要将一个对象转换为特定类型,通常可以使用强制转换操作…

    C# 2023年5月15日
    00
  • win2003 sp2+iis 6.0上部署.net 2.0和.net 4.0网站的方法

    下面是关于“win2003sp2+iis6.0上部署.net2.0和.net4.0网站的方法”的完整攻略,包含两个示例。 1. 简介 在Windows Server 2003 SP2和IIS 6.0上部署.NET 2.0和.NET 4.0网站需要进行一些特定的配置。本文将详细介绍如何在这个环境中部署.NET 2.0和.NET 4.0网站。 2. 部署.NET…

    C# 2023年5月15日
    00
  • C# WinForm国际化实现的简单方法

    那么下面我来详细讲解一下“C# WinForm国际化实现的简单方法”。 什么是国际化 国际化(Internationalization),简称I18N,指将软件(尤其是在开发过程中)设计成可同时支持多种语言和字符集的技术。通俗点说,国际化就是将我们的程序在不同地区、不同语言下也能够顺利运行,显示相应的语言文本和界面信息。 WinForm国际化实现的简单方法 …

    C# 2023年6月6日
    00
  • ASP.NET MVC实现下拉框多选

    以下是“ASP.NET MVC实现下拉框多选”的完整攻略: 什么是ASP.NET MVC下拉框多选 ASP.NET MVC下拉框多选是一种机制,允许用户在下拉框中选择多个选项。这种机制可以提高用户体验,并使用户能够更轻松地选择多个选项。 ASP.NET MVC实现下拉框多选的步骤 ASP.NET MVC实现下拉框多选的步骤包括以下几个步骤: 在视图中创建下拉…

    C# 2023年5月12日
    00
  • CommunityToolkit.Mvvm8.1 viewmodel源生成器写法(3)

      本系列文章导航 https://www.cnblogs.com/aierong/p/17300066.html https://github.com/aierong/WpfDemo (自我Demo地址) 希望提到的知识对您有所提示,同时欢迎交流和指正 作者:aierong出处:https://www.cnblogs.com/aierong   说明 Co…

    C# 2023年4月17日
    00
  • C#集合之不变集合的用法

    C#集合之不变集合的用法 C#中的不变集合(Immutable Collection)是指一旦创建,就不能再添加、删除或更改其元素的集合。在多线程编程和函数式编程中,不变集合被广泛应用。C#中的不变集合包括ImmutableList、ImmutableDictionary、ImmutableSortedSet等,下面我们将详细讲解不变集合的用法。 不变集合的…

    C# 2023年6月8日
    00
  • C# Linq的Zip()方法 – 将两个序列中的对应元素组合成一个新的序列

    下面是关于C# Linq的Zip()方法的详细攻略: 什么是Zip()方法 Zip()方法是LINQ操作中的一种,它接收两个序列作为参数,将这两个序列的对应元素合并在一起,并返回一个新的序列。 这个方法在处理数据时非常有用,例如,我们可以使用Zip()从两个数组中创建一个“键值对”,或者从两个不同的列表中提取相关数据。 Zip()方法的语法和用法 Zip()…

    C# 2023年4月19日
    00
  • c#委托详解和和示例分享

    C#委托详解 什么是委托 在C#语言中,委托是指向一个或多个方法的引用,它允许执行方法的实例动态绑定到一个委托变量上。简单理解委托,可以将它视为让我们能够以一种更加灵活的方式处理方法的一种方式。在C#中,委托类属于System命名空间下。 委托的定义 委托的定义语法为: delegate <return type> <delegate na…

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