
ASP.NET图片上传与缩略图、水印生成
下载需积分: 9 | 24KB |
更新于2024-07-31
| 176 浏览量 | 举报
收藏
"ASP.NET 图片上传与处理技术,包括生成缩略图和添加水印"
在ASP.NET中,处理用户上传的图片是一项常见的任务,尤其是对于那些包含图像展示或编辑功能的Web应用。该资源描述了一个方法,用于在用户上传图片时,同时生成缩略图并可添加水印,以满足多种显示需求。以下是对这段代码的详细解释和扩展:
首先,我们需要一个HTML Input File控件(HtmlInputFile)来让用户选择要上传的图片。在提交表单时,`HtmlInputFile`的`PostedFile`属性会包含用户选定的文件信息。
```csharp
HtmlInputFile upImage;
HttpPostedFile myFile = upImage.PostedFile;
```
检查`myFile`是否为空以及文件长度,确保有文件被选中并且非零大小。接着,获取文件的扩展名,以判断是否为支持的图片格式:
```csharp
string extendName = System.IO.Path.GetExtension(myFile.FileName).ToLower();
if (extendName != ".jpg" && extendName != ".jpge" && extendName != ".gif" && extendName != ".bmp" && extendName != ".png")
return "图片格式不正确";
```
这段代码仅支持`.jpg`, `.jpge`, `.gif`, `.bmp` 和 `.png` 格式的图片,如果用户上传了其他格式的文件,会返回错误信息。
然后,读取文件内容到字节数组,以便进一步处理:
```csharp
byte[] myData;
// 读取文件到myData
```
生成缩略图通常涉及调整图片尺寸,以保持原始宽高比。这里的方法接受缩略图的宽度和高度作为参数:
```csharp
int intThumbWidth, int intThumbHeight;
```
接下来,可以使用`System.Drawing`命名空间中的类来处理图片。首先,创建一个`Image`对象来表示上传的图片:
```csharp
using System.Drawing;
Image originalImage = Image.FromStream(myFile.InputStream);
```
为了生成缩略图,我们需要创建一个新的`Bitmap`对象,设置其宽度和高度,并保持原始比例:
```csharp
Size newSize = GetNewSize(originalImage.Size, intThumbWidth, intThumbHeight);
Bitmap thumbnail = new Bitmap(newSize.Width, newSize.Height);
Graphics graphics = Graphics.FromImage(thumbnail);
graphics.DrawImage(originalImage, 0, 0, newSize, GraphicsUnit.Pixel);
```
`GetNewSize`函数用于计算缩放后的尺寸,保持原始宽高比:
```csharp
private Size GetNewSize(Size originalSize, int maxWidth, int maxHeight)
{
float ratioX = (float)maxWidth / originalSize.Width;
float ratioY = (float)maxHeight / originalSize.Height;
float ratio = Math.Min(ratioX, ratioY);
return new Size((int)(originalSize.Width * ratio), (int)(originalSize.Height * ratio));
}
```
生成缩略图后,可以将其保存到服务器的指定路径,并返回缩略图文件名:
```csharp
string sSavePath, sThumbExtension;
string thumbFileName = Guid.NewGuid().ToString() + sThumbExtension;
thumbnail.Save(sSavePath + thumbFileName, ImageFormat.Jpeg);
stringsThumbFile = thumbFileName;
```
至于添加水印,可以创建一个文本框或图像(例如公司Logo),将其绘制到缩略图上。这个过程涉及到对`Graphics`对象的更多操作,包括字体设置、透明度控制和位置计算。
```csharp
using (Font font = new Font("Arial", 24))
{
StringFormat sf = new StringFormat();
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
graphics.DrawString("Watermark Text", font, new SolidBrush(Color.Gray), new RectangleF(0, 0, thumbnail.Width, thumbnail.Height), sf);
}
```
最后,记得释放所有资源,避免内存泄漏:
```csharp
graphics.Dispose();
originalImage.Dispose();
thumbnail.Dispose();
```
这个函数不仅实现了图片上传,还提供了生成清晰缩略图的功能,可以作为一个基础框架进行扩展,如添加水印、图片质量控制、多格式支持等。通过适当的优化,它可以在实际项目中有效提高图片处理的效率和用户体验。
相关推荐


















czfczx_1221
- 粉丝: 0
最新资源
- 数字留言本V2.0:管理员在线管理功能介绍
- bmp2ascii软件:将BMP图片转换为ASCII字符
- AsmStudio R5: 强大的集成汇编开发环境
- ASP技术打造的Javascript与Excel留言本系统
- 新版人间四月天留言簿v3.5实现图片FLASH特效增强
- 网路文字留言本 v3.0 发布,新增用户头像及表情功能
- 美化修改版校园留言本:功能全面,操作简便
- 蓝色魅力留言本 v1.0:简洁设计与功能优化
- Bluemask留言本单用户版:简洁易用的留言板解决方案
- 礼拜八留言簿新版本v1.3.5正式发布,含15套样式更新
- 石器时代FLASH留言板v1.1功能介绍
- 生活者姿态留言系统:留言板类的全新体验
- Ublog v1.6汉化版:提升日志管理与留言板互动
- 繁体中文版礼拜八留言簿v1.3.5更新十五套样式
- 在线公开日记服务「潇湘在线」清爽绿色版发布
- 人人留言板v1.4:多功能留言统计与管理平台
- 2003版风之幻想日记本新增功能详细介绍
- 柏图留言本BTB v1.1功能介绍与特点解析
- 人间四月天留言系统V4.0:全新功能与改进
- Rui Book v1.0 Beta:全新的留言板类应用
- x-book(FLASH留言本) v1.0 开源发布
- 助捷工作室留言本v1.1版本发布
- 风雅颂iBook Professional 2004版升级特性解析
- 为Discuz!2.x定制的neowin风格PHP论坛皮肤