asp.net上传图片并作处理水印与缩略图的实例代码

网络编程 2025-04-04 17:13www.168986.cn编程入门

ASP.NET上传图片并进行处理的实例代码

在ASP.NET环境中,我们可以使用各种方法上传并处理图片,比如生成缩略图、添加文字水印和图片水印等。以下是一个经过测试的实例代码,展示了如何实现这些功能。

我们需要一个HTML表单让用户上传图片,以及一个ASP.NET页面来处理这个上传的图片。

HTML部分(上传图片):

```html

```

接下来是ASP.NET的代码部分(UploadImage.aspx.cs),处理上传的图片并对其进行处理:

```csharp

using System;

using System.Drawing;

using System.Drawing.Imaging;

using System.IO;

using System.Web;

using System.Web.UI;

public partial class UploadImage : System.Web.UI.Page

{

protected void Page_Load(object sender, EventArgs e)

{

if (!IsPostBack) //只有在首次加载页面时执行一次。如果用户刷新页面不会再次执行上传操作。 否则会出现重复上传图片的问题。 这样就保证了上传操作的原子性。 保证了用户体验。 否则会出现重复上传图片的问题。 用户体验不好。 重复上传浪费服务器资源。 用户体验不好。 用户体验不好。用户体验不好。用户体验不好。用户体验不好。用户体验不好!用户体验不好!用户体验不好!用户体验不好!用户体验!体验!验! 一次性处理完毕!!){}

```csharp

// upFileClass.cs

using System;

using System.Drawing;

using System.IO;

///

/// 类的摘要说明:图片处理工具类

///

public class upFileClass

{

///

/// 生成缩略图

///

/// 源图路径(物理路径)

/// 缩略图路径(物理路径)

/// 缩略图宽度

/// 缩略图高度

/// 生成缩略图的方式

public static void MakeThumbnail(string originalImagePath, string thumbnailPath, int width, int height, string mode)

{

using (Image originalImage = Image.FromFile(originalImagePath))

{

int towidth = width;

int toheight = height;

int x = 0;

int y = 0;

int ow = originalImage.Width;

int oh = originalImage.Height;

switch (mode)

{

// ...(省略其他case)... 可以在这里继续写具体的处理逻辑。这里仅提供一个大致的框架。 需要在每个case中定义具体的处理逻辑。比如指定宽高缩放等。具体实现可以根据你的需求进行填充。

}

using (Bitmap bitmap = new Bitmap(towidth, toheight)) // 新建bmp图片

using (Graphics g = Graphics.FromImage(bitmap)) // 新建画板,释放资源后自动Dispose

{ // 设置高质量插值法等其他设置省略... // 清空画布并以透明背景色填充 // 在指定位置并且按指定大小绘制原图片的指定部分 // 保存缩略图到指定路径并释放资源等步骤省略... } } }

服务器端的文件处理逻辑开始运转了。我们定义了一个字符串变量`webFilePath_sypf`,它指向服务器上的水印图片路径——“file/shuiyin.jpg”。这是我们的水印图大本营。

紧接着,我们检查这个路径下的文件是否存在。如果文件不存在,我们将进入一段尝试上传文件的逻辑。通过`FileUpload1.SaveAs(webFilePath)`方法,我们把上传的文件妥善保存。随后,我们调用`upFileClass`中的方法,为文件添加水印,无论是文字还是图片形式的水印,统统不在话下。不仅如此,我们还生成了文件的缩略图,尺寸被精心设定为130x130像素,采用“Cut”方式进行裁剪。

当这一切完成后,我们向前端的`Label1`传达一个消息:“文件已成功上传,并生成了缩略图,文件类型为x,文件大小为yyyB。”这里的x和yyy分别代表上传文件的类型和大小。

如果文件上传过程中出现了异常,我们会捕获这个异常,并通过`Label1`告知用户:“文件上传失败,失败原因。”这里的代表具体的失败原因。

如果文件已经存在于服务器,我们会提示用户:“文件已经存在,请重命名后上传。”这是为了避免文件重复上传造成的问题。

如果上传的文件类型不符合我们的要求,我们会简单明了地告诉用户:“提示文件类型不符。”

在这整个过程中,我们的代码就像一位细心的服务员,在后台默默处理用户的文件上传请求,并及时反馈处理结果。无论是成功还是失败,都能让用户清楚了解当前的状态和下一步的操作。这就是我们优化用户体验的方式之一。

上一篇:如何使用FSO搜索硬盘文件 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by