看Web Cast的时候看到了讲文件和图片处理的视频,而现在正好有必要仔细研究一下这方面,所以自己照着示例的代码和说明试着写了一个。
第一个错误是提示:无法访问System.Drawing.Imaging.ImageFormat,因为它受保护级别限制。后来找了半天,发现是一个字母的大小写弄错了。
ImageFormat f = ImageFormat.bmp;
将这段代码改成ImageFormat f = ImageFormat.Bmp;
调试就没有错了。
然后运行,装载图片都没没有错,可是将图片转换为其他格式的时候又会提示出错了:
异常详细信息: System.Runtime.InteropServices.ExternalException: GDI+
中发生一般性错误。百度了一下,说是在iis中访问权限不够,后来将我需要使用的目录(在此程序中是D盘)设置成(everyone的权限都是可读写的),最后终于能成功运行了,不过这样子也降低了安全性,有时间要好好看看清华大学出版的那本.NET应用程序安全策略.
页面的后台代码如下(运行成功的):
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing.Imaging;
namespace Picture
{
/// <summary>
/// BasicImage 的摘要说明。
/// </summary>
public class BasicImage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
}
protected System.Web.UI.WebControls.Label Label1;
protected System.Web.UI.WebControls.Label Label2;
protected System.Web.UI.WebControls.Button LoadBtn;
protected System.Web.UI.WebControls.TextBox tbPath;
protected System.Web.UI.WebControls.Image ImageShow;
protected System.Web.UI.WebControls.Button Convert;
protected System.Web.UI.WebControls.DropDownList ddlFormat;
protected System.Web.UI.HtmlControls.HtmlInputFile InputFile;
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);
this.LoadBtn.Click += new System.EventHandler(LoadBtn_Click);
this.Convert.Click += new System.EventHandler(Convert_Click);
}
#endregion
protected void LoadBtn_Click(object sender,System.EventArgs e)
{
ImageShow.ImageUrl = InputFile.PostedFile.FileName;
}
protected void Convert_Click(object sender,System.EventArgs e)
{
string strFilePathName = ImageShow.ImageUrl;
System.Drawing.Image i = System.Drawing.Image.FromFile(strFilePathName);
//以下得到在服务器上保存的文件路径名
string strFileName = Path.GetFileNameWithoutExtension(strFilePathName);
ImageFormat f = ImageFormat.Bmp;
switch(ddlFormat.SelectedItem.Text.ToLower())
{
case"bmp":
break;
case"jpeg":
f = ImageFormat.Jpeg;
break;
case"gif":
f = ImageFormat.Gif;
break;
case"png":
f = ImageFormat.Png;
break;
case"tiff":
f = ImageFormat.Tiff;
break;
}
string strSeverPath=tbPath.Text+"\\"+strFileName+"."+
ddlFormat.SelectedItem.Text;
try
{
i.Save(strSeverPath,f);
}
catch(System.Exception exception)
{
throw exception;
}
}
}
}
posted on 2007-04-21 09:03
谢良威 阅读(108)
评论(0) 编辑 收藏 网摘