图像二进制文件的操作

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

图像二进制文件的操作(1/2)

2009年06月10日星期三 20:57

一、操作要点:

∙将文件转换为二进制,再将二进制转回为文件

∙将文件写入到XML,再读出来显示或者还原

∙将文件写入到数据库,再读取出来显示或者还原

二、学习知识点:

二进制操作的类:FileStream(文件流)、BinaryReader(二进制流读取器)、BinaryWriter(二进制流写入器)

三、操作步骤:

(1)新建类:fileToData.cs

using System.IO;

///

/// fileToData 的摘要说明

///

public class fileToData

{

public fileToData() //构造函数

{ }

///

/// 将传进来的文件转换成字符串(二进制)

///

/// 待处理的文件路径

/// String

public static string FileToBinary(string FilePath)

{

FileStream fs=new FileStream(FilePath,FileMode.Open,FileAccess.Read); //利用新传来的路径实例化一个FileStream对象

int filelength = Convert.ToInt32(fs.Length);

//得到对象的大小

Byte[]filebyteArray=new byte[filelength];

//申明一个byte数组

BinaryReader br = new BinaryReader(fs);

//申明一个读取二进制流的BinaryReader对象

for (int i = 0; i < filelength; i++)

{ //循环数组大小那么多次

br.Read(filebyteArray, 0, filelength); //第一个数组用0表示

//将数据读取出来放在数组中

}

string strData = Convert.ToBase64String(filebyteArray); //8位无符号整数数组ToBase64

//将数组转换为String字符传

return strData;

}

///

/// 将传进来的二进制字符串转换为图片文件

///

/// 保存的路径

/// 需要转换的字符串

public static void BinaryToFile(string path,string Binary)

{

FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write); //利用新传来的路径实例化一个FileStream对象

BinaryWriter bw = new BinaryWriter(fs);

//实例化一个用于写的 BinaryWriter

bw.Write(Convert.FromBase64String(Binary));

//将传近来的二进制字符转换为8位无符号整数数组再写进去

bw.Close(); //关闭二进制流写入器

fs.Close(); //关闭文件流

}

}

(2)将文件转换为二进制及二进制转换为文件的实现(ToBinary.aspx):

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

{

protected void Page_Load(object sender, EventArgs e)

{

string a=fileToData.FileToBinary(Server.MapPath("~/图片1.gif")); //将图片1转换为二进制

fileToData.BinaryToFile(Server.MapPath("~/图片2.gif"), a); //将二进制转换为图片2

}

}

(3)新建类:FileToxml.cs

加入命名空间:using System.IO;using System.Text;using System.Xml;

///

/// 将文件转换为二进制

///

public class FileToxml

{

public FileToxml()

{

}

///

/// 从上传控件中

///

/// 被加载了文件的FileUpload上传控件

/// XML文件的存放位置

/// 图片的标识ID

public static void FileToXML(FileUpload fu,string xmlPath,Guid id) {

if (fu.HasFile)

{ //先判断FileUpload对象中是否包含了文件

string PathString = fu.FileName;

int FileLength = fu.PostedFile.ContentLength; //只得出带扩展名的文件名

try

{

Byte[] FileByteArray = new byte[FileLenght];

//申明一个大小为文件总字节大的Byte数组以存放即将产生的二进制数据

Stream Streamobj = fu.PostedFile.InputStream;

//创建一个能够读取被上载文件内容的Stream对象

Streamobj.Read(FileByteArray, 0, FileLength);

//使用Stream对象的读取方法,参数说明将数据流存放在刚才申明的数组中,从0开始读,读取的字节数为全部

XmlDocument xdom = new XmlDocument();

if (!File.Exists(xmlPath))

{ //如果不存在XML,则创建

XmlDeclaration xdec = xdom.CreateXmlDeclaration("1.0", "utf-8", null); xdom.AppendChild(xdec); //创建第一行声明

XmlElement Root = xdom.CreateElement("File"); //创建根节点File xdom.AppendChild(Root);

XmlElement RootElement = xdom.CreateElement("Image"); //创建父节点Image

相关文档
最新文档