首页 > 语言 > 关键词 > ASP.NET最新资讯 > 正文

在ASP.NET中上传图片并生成缩略图的C#源码

2008-09-11 10:53 · 稿源:互联网

ASP.NET中上传图片并生成缩略图的C#源码<FONTsize=4><FONTsize=4><FONTsize=4>usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Drawing;
usingSystem.Web;
usingSystem.Web.SessionState;
usingSystem.Web.UI;
usingSystem.Web.UI.WebControls;
usingSystem.Web.UI.HtmlControls;
usingSystem.IO;
usingSystem.Drawing.Imaging;

namespaceeMeng.Exam
{
///<summary>
///Thumbnail的摘要说明。
///</summary>
publicclassThumbnail:System.Web.UI.Page
{
protectedSystem.Web.UI.WebControls.LabelLabel1;
protectedSystem.Web.UI.WebControls.ButtonButton1;

privatevoidPage_Load(objectsender,System.EventArgse)
{
//在此处放置用户代码以初始化页面
Label1.Text="<h3>在ASP.NET里轻松实炙趼酝?lt;/h3>";
Button1.Text="上载并显示缩略图";

}

#regionWeb窗体设计器生成的代码
overrideprotectedvoidOnInit(EventArgse)
{
//
//CODEGEN:该调用是ASP.NETWeb窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

///<summary>
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
///</summary>
privatevoidInitializeComponent()
{
this.Button1.Click+=newSystem.EventHandler(this.Button1_Click);
this.Load+=newSystem.EventHandler(this.Page_Load);

}
#endregion

privatevoidButton1_Click(objectsender,System.EventArgse)
{
HttpFileCollectionMyFileColl=HttpContext.Current.Request.Files;
HttpPostedFileMyPostedFile=MyFileColl[0];

if(MyPostedFile.ContentType.ToString().ToLower().IndexOf("image")<0)
{
Response.Write("无效的图形格式。");
return;
}
GetThumbNail(MyPostedFile.FileName,100,100,
MyPostedFile.ContentType.ToString(),false,MyPostedFile.InputStream);
}
privateSystem.Drawing.Imaging.ImageFormatGetImageType(objectstrContentType)
{
if((strContentType.ToString().ToLower())=="image/pjpeg")
{
returnSystem.Drawing.Imaging.ImageFormat.Jpeg;
}
elseif((strContentType.ToString().ToLower())=="image/gif")
{
returnSystem.Drawing.Imaging.ImageFormat.Gif;
}
elseif((strContentType.ToString().ToLower())=="image/bmp")
{
returnSystem.Drawing.Imaging.ImageFormat.Bmp;
}
elseif((strContentType.ToString().ToLower())=="image/tiff")
{
returnSystem.Drawing.Imaging.ImageFormat.Tiff;
}
elseif((strContentType.ToString().ToLower())=="image/x-icon")
{
returnSystem.Drawing.Imaging.ImageFormat.Icon;
}
elseif((strContentType.ToString().ToLower())=="image/x-png")
{
returnSystem.Drawing.Imaging.ImageFormat.Png;
}
elseif((strContentType.ToString().ToLower())=="image/x-emf")
{
returnSystem.Drawing.Imaging.ImageFormat.Emf;
}
elseif((strContentType.ToString().ToLower())=="image/x-exif")
{
returnSystem.Drawing.Imaging.ImageFormat.Exif;
}
elseif((strContentType.ToString().ToLower())=="image/x-wmf")
{
returnSystem.Drawing.Imaging.ImageFormat.Wmf;
}
else
{
returnSystem.Drawing.Imaging.ImageFormat.MemoryBmp;
}
}

privatevoidGetThumbNail(stringstrFileName,intiWidth,intiheight,
stringstrContentType,boolblnGetFromFile,System.IO.StreamImgStream)
{
System.Drawing.ImageoImg;

if(blnGetFromFile)
{
oImg=System.Drawing.Image.FromFile(strFileName);
}
else
{
oImg=System.Drawing.Image.FromStream(ImgStream);
}
oImg=oImg.GetThumbnailImage(iWidth,iheight,null,IntPtr.Zero);
stringstrGuid=System.Guid.NewGuid().ToString().ToUpper();
stringstrFileExt=strFileName.Substring(strFileName.LastIndexOf("."));
Response.ContentType=strContentType;
MemoryStreamMemStream=newMemoryStream();
oImg.Save(MemStream,GetImageType(strContentType));
MemStream.WriteTo(Response.OutputStream);
}

}
}
</FONT></FONT></FONT><FONTcolor=#ff0000size=4></FONT><FONTsize=4>功能:
1。把图片文件(JPGGIFPNG)上传,
2。保存到指定的路径(在web.config中设置路径,以文件的原有格式保存),
3。并自动生成指定宽度的(在web.config中设置宽度)
4。和指定格式的(在web.config中指定缩略图的格式)
5。和原图比例相同的缩略图(根据宽度和原图的宽和高计算所略图的高度)
6。可以判断是否已经存在文件
7。如果不覆盖,则给出错误
8。如果选中"覆盖原图"checkbox,则覆盖原图。
9。可以根据要求,在webform上设置1个以上的fileinput和相应的checkbox
10。并在文件上传完毕后,显示原图的文件名,尺寸,字节,和
11。缩略图的文件名尺寸。
12。缩略图的文件名格式:原图+"_thumb."+指定格式,如:test.jpg_thumb.gif,以便于管理。

--------------------
publicvoidUploadFile(objectsender,System.EventArgse)
{

stringimgNameOnly,imgNameNoExt,imgExt;
stringimgThumbnail;
interroNumber=0;
System.Drawing.ImageoriImg,newImg;
stringstrFePicSavePath=ConfigurationSettings.AppSettings["FePicSavePath"].ToString();
stringstrFePicThumbFormat=ConfigurationSettings.AppSettings["FePicThumbFormat"].ToString().ToLower();
intintFeThumbWidth=Int32.Parse(ConfigurationSettings.AppSettings["FePicThumbWidth"]);
stringfileExt;

StringBuilderpicInfo=newStringBuilder();

if(Page.IsValid)
{


for(inti=0;i<Request.Files.Count;i++)
{
HttpPostedFilePostedFile=Request.Files[i];
fileExt=(System.IO.Path.GetExtension(PostedFile.FileName)).ToString().ToLower();

imgNameOnly=System.IO.Path.GetFileName(PostedFile.FileName);
if(fileExt==".jpg"||fileExt==".gif"||fileExt==".png")
{

if(System.IO.File.Exists(strFePicSavePath+imgNameOnly)&&(checkboxlistRewrite.Items[i].Selected==false))
{
erroNumber=erroNumber+1;
picInfo.Append("<b>错误:</b>文件("+(i+1)+")"+imgNameOnly+"已经存在,请修改文件名<br/>");
}
}
else
{
erroNumber=erroNumber+1;
picInfo.Append("<b>错误:</b>文件("+(i+1)+")"+imgNameOnly+"扩展名"+fileExt+"不被许可<br/>");
}

}

if(erroNumber>0)
{
picInfo.Append("<fontcolor=red>全部操作均未完成,请修改错误,再进行操作</font><br/>");
}
else
{
for(inti=0;i<Request.Files.Count;i++)
{

HttpPostedFilePostedFile=Request.Files[i];
imgNameOnly=System.IO.Path.GetFileName(PostedFile.FileName);
imgNameNoExt=System.IO.Path.GetFileNameWithoutExtension(PostedFile.FileName);
imgExt=System.IO.Path.GetExtension(PostedFile.FileName).ToString().ToLower();


oriImg=System.Drawing.Image.FromStream(PostedFile.InputStream);
newImg=oriImg.GetThumbnailImage(intFeThumbWidth,intFeThumbWidth*oriImg.Height/oriImg.Width,null,newSystem.IntPtr(0));
switch(imgExt)
{
//case".jpeg":
case".jpg":
oriImg.Save(strFePicSavePath+imgNameOnly,System.Drawing.Imaging.ImageFormat.Jpeg);
break;
case".gif":
oriImg.Save(strFePicSavePath+imgNameOnly,System.Drawing.Imaging.ImageFormat.Gif);
break;
case".png":
oriImg.Save(strFePicSavePath+imgNameOnly,System.Drawing.Imaging.ImageFormat.Png);
break;
}

//oriImg.Save(ConfigurationSettings.AppSettings["FePicSavePath"]+imgNameNoExt+".jpg",System.Drawing.Imaging.ImageFormat.Jpeg);

switch(strFePicThumbFormat)
{
//jpegformatcangetthesmallestfilesize,andthepngisthelargestsize
//case"jpeg":
case"jpg":
newImg.Save(strFePicSavePath+imgNameOnly+"_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail=imgNameOnly+"_thumb.jpg";
break;
case"gif":
newImg.Save(strFePicSavePath+imgNameOnly+"_thumb.gif",System.Drawing.Imaging.ImageFormat.Gif);
imgThumbnail=imgNameOnly+"_thumb.gif";
break;
case"png":
newImg.Save(strFePicSavePath+imgNameOnly+"_thumb.png",System.Drawing.Imaging.ImageFormat.Png);
imgThumbnail=imgNameOnly+"_thumb.png";
break;
default:
newImg.Save(strFePicSavePath+imgNameOnly+"_thumb.jpg",System.Drawing.Imaging.ImageFormat.Jpeg);
imgThumbnail=imgNameOnly+"_thumb.jpg";
break;

}//switch

picInfo.Append("<b>文件 名:</b>"+imgNameOnly+"("+oriImg.Width+"x"+oriImg.Height+")"+PostedFile.ContentLength/1024+"KB<br/>");
picInfo.Append("<b>缩略图名:</b>"+imgThumbnail+"("+newImg.Width+"x"+newImg.Height+")<br/><br/>");

oriImg.Dispose();
newImg.Dispose();

}//for
picInfo.Append("<fontcolor=red>所有操作成功</font><br/>");

}//iferronumber=0

}
else
{
picInfo.Append("<fontcolor=red>有错误,请检查。操作未成功</font><br/>");

}

lblPicInfo.Text=picInfo.ToString();

}
</FONT>

网友热搜:

  • 相关推荐
  • 大家在看
  • TypeScript 热度超 C 与 Python、Go 开发收入高、运维吃香,调查了 65000 名开发者有这些发现!

    近十年来,Stack Overflow的年度开发者调查问卷被誉为全球范围内最大的开发者调查。为了寻求多样化的代表,Stack Overflow的官方将调查问卷从技术和行为等方面提出了各类问题,希望收集的信息能够帮助改善Stack Overflow开发者的社区。

  • C男控是什么意思 C男控是什么梗

    最近不少的小伙伴在网络看到一个比较有趣的词语——C男控,很多人不了解什么是C男控,这个到底代表什么意思呢?下面就来为大家分享一下C男控这个梗。

  • OKEx C2C借贷上线WEB端 产品矩阵愈加完善

    随着加密货币市场对稳健理财强烈需求的显现,C2C借贷逐渐成为加密货币市场布局的新赛道。近日,全球著名的加密货币交易平台OKEx上线C2C借贷功能WEB端,再次为行业发展注入强劲动能。三步完成借币继3月19日在APP端全面上线C2C借贷功能后,OKEx产品线再添新成员,于6月23日宣布其C2C借贷功能现已上线WEB端。用户可前往OKEx官网进行借币操作,通过质押BTC或ETH借到USDT,实现资金的灵活周转。整个借币过程操作简单方便,三步即可完成?

  • Esprinet以3400万欧元收购GTI

    [TechWeb]意大利批发商Esprinet宣布已与GTI达成协议,以购买该公司100%的股份。这项行动共计3380万欧元,将在当局于9月底批准时以现金支付。通过购买GTI,Esprinet凭借收入和与Tech Data的距离本身,成为西班牙市场上第一家批发商,该公司在过去几年中一直与该公司争夺排名第一的位置。此外,GTI将提供Esprinet,该公司在西班牙经营JoséMaríaGarcía(这是一项补充业务),该业务是通过云销售的软件,尤其是Microsoft的软件。?

  • Planet将通过SpaceX的火箭发射6颗Skysat卫星

    DoNews 6月10日消息(记者 刘文轩)据The Verge报道,卫星影像公司Planet将在6月和7月的两次卫星发射中,采用SpaceX的火箭,各运送3颗110kg重的卫星。至于价格,SpaceX则是以每公斤500美元的价格来计算,Planet发射副总裁Mike Safyan表示,SpaceX将发射费用压低到“难以置信”的程度。Planet原本运营着60颗中解析度卫星,2017年收购Google的Terra Bella卫星影像部门后,Planet拥有了7颗高解析度Skysat卫星。在这之后,Planet又发射

  • 京东:今日在港公开发售 最高公开发售价为236港元/股

    今日,京东在港交所公告称, 6 月 8 日(星期一)上午九时开始香港公开发售,预期 6 月 11 日(星期四)定价, 6 月 18 日上午九时正在香港联交所交易。在港上市最高公开发售价为 236 港元/股,将发行1. 33 亿股发售股份。

  • 长光华芯完成1.5亿C轮融资

    长光华芯完成1.5亿人民币C轮融资的工商变更,标志着2019年7月启动的C轮融资顺利完成。本轮融资由华泰证券旗下伊犁苏新投资基金领投,国投(宁波)科技成果转化创业投资基金、南京道丰投资跟投,含苏州芯诚、苏州芯同两个长光华芯员工股权激励平台,总融资额1.5亿元。长光华芯成立于2012年,主要致力于高功率半导体激光器芯片、高效率VCSEL芯片、高速光通信芯片及相关光电器件和应用系统的研?

  • 如何让客厅有颜有料?TCL C8电视轻松帮到你

    客厅是家中最重要的娱乐活动区域,所谓“客厅”,顾名思义是平时用来接待客人的地方,自然也是一个家的门面,是家庭装修的重中之重。因此笔者在这给大家提供一些客厅装修的小贴士,希望能够让大家少踩坑。大家对客厅的装修风格各有不同,但首先都要注意保证客厅位置的采光,这能让人觉得客厅更大,家具也要先考虑实用性才购买,预留足够的活动空间。其次是,像电线、水管、涂料、瓷砖(地板)等硬装一定要选择质量高的,避免使用过

  • 日本动画电影《无限》线上首映 西瓜视频与Netflix全球同步播出

    【TechWeb】6月18日消息,今天下午6点,日本动画电影《无限》(又名《想哭的我戴上了猫的面具》)开启全球首映,在中国通过西瓜视频、抖音、今日头条平台上线。这是继BBC剧集《德古拉》后,西瓜视频再度实现与Netflix全球同步播出影视作品。届时,用户可在上述平台中付费观看该片。 公开资料显示,《无限》由日本著名导演佐藤顺一和柴山智隆联合执导,主要讲述女生笹木美代的青春奇幻故事,主打超萌轻甜治愈风格。绰号为“无限”?

  • 红布林扎根二手奢侈品垂直领域,打造完善的C2B2C供应链体系

    如今的中国正步入奢侈品热销时代,截止到 2019 年中国消费者的奢侈品消费总额已经超过 7000 亿人民币,越来越多的中国消费者享受着奢侈品带来的独有品味,个性情调与专属魅力。在这种社会大背景的催动下,不少收入有限的“潮人”开始通过二手奢侈品消费,满足自己对高品质生活的追求;另外一些卖家为了获取周转资金,也愿意投身到二手奢侈品交易之中,为此买卖双方客观存在的供需关系,让二手奢侈品消费市场成为当代手头资金有限,

  • BSN合格开发者介绍——米链科技

    2020 年 6 月 1 日,杭州米链科技有限公司正式成为国家级区块链服务网络BSN的合格开发者资格,将为BSN的开发者提供专业技术支持。BSN是由国家信息中心、中国移动、中国银联等机构共同发起组建的一个跨云服务、跨门户、跨底层架构,用于部署和运行区块链应用的全球性公共基础设施网络。BSN是全球首个由中国自主创新并控制入网权的网络基础设施网络,可在全球进行快速部署。区块链服务网络(Blockchain-based Service Network)(以?

  • 直播转化金额破亿 方太是如何站上厨电直播C位的?

    最新数据显示,截至 6 月 18 日 24 点,方太全网销售额突破5. 8 亿,居厨电行业店铺类渠道排名Top1。与去年同期的3. 1 亿相比,涨幅高达87.1%,而这其中,直播销售占比高达20.7%。  

  • IBM退出面部识别 将不再开发或研究该技术

    外媒报道称,在6月8日本周一,IBM首席执行官阿里德·克里希纳(Arvind Krishna)在致美国国会的一封信中说,IBM将不再提供通用的面部识别或分析软件。IBM表示,该公司也将不再开发或研究该技术。

  • Redmi 9A、Redmi 9C官宣:大电池、大屏幕

    上周,小米旗下品牌Redmi在国内发布了新款入门级Redmi 9,价格799元起,而现在,小米马来西亚官方宣布了两款新机Redmi 9A、Redmi 9C,和之前的套路类似。小米称,Redmi 9A/9C将于6月30日在马来

  • 互联网巨头集体蹭“地摊经济”,谁能C位出道?

    忽如一夜春风来,千摊万摊到处开。开的有多么繁荣呢?仅成都就设置临时占道摊点、摊区 2234 个,允许流动摊贩经营点 17891 个,增加就业岗位超 10 万。许昌、杭州也开始逐渐参与其中。因此有声音说当前互联网红利正在逐渐消失,“地摊经济”或许会对电商平台造成不小的冲击。

  • 明年起苹果将采用USB-C接口 最终目标是实现无接口化

    据MacOtakara报道,来自中国供应商的消息称, 2021 年起,苹果将调整新iPhone和iPad的接口,让这些设备都使用USB-C接口,保证兼容性更高。而上周出现的iPhone13 模型也显示新机似乎采用了USB-C接口。

  • 丰田新款C-HR专利图曝光:有望引进混动版

    近日,有国内媒体曝光了一组新款丰田C-HR车型的专利图,未来国产C-HR/奕泽将参考海外同步进行改款。值得一提是,有消息称新车还有望引进混合动力系统。作为年度小改款车型,新车延续了欧规C-H

  • 因认为PPT太呆板,她一气之下开发了自己的演示软件

    Digidecks是一款多媒体幻灯片软件,它的诞生非常戏剧性,源自于创始人Angelina Lawton(安吉丽娜·劳顿)对PPT的不满。当时,劳顿正在为Tampa Bay Lightning(坦帕湾闪电队)宣传。她无法接受的是,这样一支令人兴奋的专业曲棍球队竟然用如此呆板的形式向潜在赞助商推广。

  • 苹果或将开发可折叠iPhone 机身圆润无刘海

    据知名苹果爆料大神Jon Prosser透露,苹果正在开发一款可折叠的iPhone原型机。和以往采用一块柔性屏幕折叠的折叠屏手机不同,苹果的可折叠手机是将两个独立的显示面板通过铰链连接,中框为带弧度的不锈钢材质,在设计语言上和目前的iPhone11 差不多,无刘海,但在显示屏外侧有一个 "小小的额头",用于Face ID。不过,该爆料人认为,可折叠的iPhone今年上市的可能性不大。

  • 京东今日在港公开发售 定价上限236港元

    今日,京东在港发布公告称,今日上午九时开始香港公开发售,预期 6 月 11 日(星期四)定价, 6 月 18 日上午九时正在香港联交所交易,在港公开发售定价上限为 236 港元,将发行1. 33 亿股发售股份。

  • 参与评论
文明上网理性发言,请遵守新闻评论服务协议

热文

  • 3 天
  • 7天