
正文
.net中在文件夹里读取图片,net fileupload
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
.net上传图片和读取图片
using System;
using System.Drawing;
/// summary
/// 功能:文件上传
/// /summary
namespace czlib
{
public class UpFile
{
#region------上传属性-------
private string _path = @"\UpFile\";//上传类型
private string _fileType = czlib.weblib.adminlib.web_up();//上传类型
private int _sizes = 2097152;//传文件的大小KB(2097152=2MB)
private int _W = 120;//宽300
private int _H = 100;//高300
private bool _smaMap = false;//是否生成缩略图
private int _mode = 0;//生成方式
/// summary
/// 上传保存路径
/// /summary
public string Path
{
set
{
_path = @"\" + value + @"\";
}
}
/// summary
/// 允许上传大小
/// /summary
public int Sizes
{
set
{
_sizes = value * 1024;//转为字节byte
}
}
/// summary
/// 允许上传类型
/// /summary
public string FileType
{
set
{
_fileType = value;
}
}
/// summary
/// 缩略图宽度
/// /summary
public int W
{
set { _W = value; }
}
/// summary
/// 缩略图高度
/// /summary
public int H
{
set { _H = value; }
}
public bool smaMap
{
set { _smaMap = value; }
}
/// summary
/// 缩略图生成方式
/// /summary
public int mode
{
set { _mode = value; }
}
#endregion
#region-------上传文件方法------------
/// summary
/// 上传文件
/// /summary
/// param name="ful"FileUpload控件名称/param
/// returns保存路径/returns
public string fileSaveAs(System.Web.UI.WebControls.FileUpload ful)
{
try
{
if (ful.PostedFile.ContentLength == 0) { throw new ApplicationException("请选择上传文件!"); }
//LD_2008792347263759274.jpg
System.Random random = new Random();
String modifyFileName = "LD_"+DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + DateTime.Now.Millisecond.ToString() + random.Next(1000, 9999);
String uploadFilePath = System.Web.HttpContext.Current.Server.MapPath(".") + _path;
String sourcePath = ful.PostedFile.FileName;
String tFileType = sourcePath.Substring(sourcePath.LastIndexOf(".") + 1);
int strLen = ful.PostedFile.ContentLength;
if (strLen _sizes)
{
throw new ApplicationException("上传的图片不能大于" + _sizes/1024 + "KB");
}
if (_fileType.IndexOf(tFileType + "|") == -1)
{
throw new ApplicationException("目前本系统只能上传格式为:" + _fileType);
}
//目录是否存在
System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(uploadFilePath);
if (!dir.Exists)
{
dir.Create();
}
String filePath = uploadFilePath + modifyFileName + "." + tFileType;
ful.SaveAs(filePath);
if (_smaMap)
{
MakeThumbnail(filePath, uploadFilePath + "small_" + modifyFileName + "." + tFileType);
}
filePath = _path + modifyFileName + "." + tFileType;
return filePath.Replace("\\", "/");
}
catch (Exception ex)
{
throw new ApplicationException("上传时发生错误:" + ex.ToString());
}
}
#endregion
#region---------生成缩略图方法--------------
/// summary
/// 生成缩略图
/// /summary
/// param name="originalImagePath"实际路径/param
/// param name="thumbnailPath"缩略图存放实际路径/param
public void MakeThumbnail(String originalImagePath, String thumbnailPath)
{
System.Drawing.Image originalImage = System.Drawing.Image.FromFile(originalImagePath);
int towidth = _W;
int toheight = _H;
int x = 0;
int y = 0;
int ow = originalImage.Width;
int oh = originalImage.Height;
switch (_mode)
{
case 1://指定宽,高按比例
toheight = originalImage.Height * _W / originalImage.Width;
break;
case 2://指定高,宽按比例
towidth = originalImage.Width * _H / originalImage.Height;
break;
case 3://指定高宽裁减(不变形)
if ((double)originalImage.Width / (double)originalImage.Height (double)towidth / (double)toheight)
{
oh = originalImage.Height;
ow = originalImage.Height * towidth / toheight;
y = 0;
x = (originalImage.Width - ow) / 2;
}
else
{
ow = originalImage.Width;
oh = originalImage.Width * _H / towidth;
x = 0;
y = (originalImage.Height - oh) / 2;
}
break;
default://指定高宽缩放(可能变形)
break;
}
//新建一个bmp图片
System.Drawing.Image bitmap = new System.Drawing.Bitmap(towidth, toheight);
//新建一个画板
Graphics g = System.Drawing.Graphics.FromImage(bitmap);
//设置高质量插值法
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.High;
//设置高质量,低速度呈现平滑程度
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
//清空画布并以透明背景色填充
g.Clear(Color.Transparent);
//在指定位置并且按指定大小绘制原图片的指定部分
g.DrawImage(originalImage, new Rectangle(0, 0, towidth, toheight),
new Rectangle(x, y, ow, oh),
GraphicsUnit.Pixel);
try
{
//以jpg格式保存缩略图
bitmap.Save(thumbnailPath, System.Drawing.Imaging.ImageFormat.Jpeg);
}
catch (System.Exception ex)
{
throw new ApplicationException("成生缩略图错误:" + ex.Message);
}
finally
{
originalImage.Dispose();
bitmap.Dispose();
g.Dispose();
}
}
#endregion
}
} 这是上传并生成缩略图的代码,至于浏览就简单了。自己写写就可以了
相关问答
Q1: asp.net如何实现输入名称点搜索后读取出系统文件夹中相应的图片?
采用Directory的GetFiles方法,获取文件名,然后通过输入的名称和文件名对比。查找出适合的图片。
Q2: asp.net从文件夹读取图片显示到页面的问题
要保证没张图片都不失真的话这真不好弄,比如你的标准尺寸是128x64
那么大于或者小于这个尺寸比较多的图片缩放到这个尺寸肯定会有失真的现象!这是没办法避免的
如果要个图片加上链接的话首先确定你的要链接到的页面,如果是链接到图片的地址的话你可以这样
a href='%# Eval("src")%'img src='%# Eval("src")%'/a
这样就能连接到图片的路径了
这样做的前提是你必须把自动生成列给去掉,然后手动的添加,再到“源”哪里去是用这样的方式绑定数据
.net中在文件夹里读取图片的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于net fileupload、.net中在文件夹里读取图片的信息别忘了在本站进行查找喔。






