如何把一个图像存储到XML数据中,并读取出来 by iCeSnaker - Program rhapsody

xml|数据

以前对于XML如何存储数据很感兴趣,特别是看到一个文章说,可以直接用XML代替SQL server2000用来存储数据和交互数据,目前还在研究之中。终于把如何存取图像到xml的代码搞定:)

读取图像

//定义图像源与目标xml文件

string ImgFileName = @"d:\中国移动暴强广告.JPG";

string XmlFileName = @"D:\img.xml";

XmlTextWriter aXmlTextWriter = new XmlTextWriter(XmlFileName, System.Text.Encoding.Default);

aXmlTextWriter.Formatting = Formatting.Indented;

try

{

aXmlTextWriter.WriteStartDocument();

aXmlTextWriter.WriteComment("Contains a BinHex JPEG image");

aXmlTextWriter.WriteStartElement("jpeg");

//下边就是通用的读取图像的代码

System.IO.FileInfo fi = new System.IO.FileInfo(ImgFileName);

int size = (int)fi.Length;

//read the jpeg file

byte []img = new byte[size];

System.IO.FileStream fs = new System.IO.FileStream(ImgFileName, System.IO.FileMode.Open);

System.IO.BinaryReader br = new System.IO.BinaryReader(fs);

img = br.ReadBytes(size);

br.Close();

//注意这里用的是BinHex编码

aXmlTextWriter.WriteBinHex(img,0,size);

aXmlTextWriter.WriteEndDocument();

}

catch(XmlException xmlE)

{

Response.Write(xmlE.Message);

}

finally

{

aXmlTextWriter.Close();

}

显示图像

简单的在窗口中放一个PictureBox,在一个按钮中写如下代码

string XmlFileName = @"D:\img.xml";

XmlTextReader aXmlTextReader = new XmlTextReader(XmlFileName);

aXmlTextReader.Read();

aXmlTextReader.MoveToContent();

if(aXmlTextReader.LocalName == "jpeg")

{

System.IO.FileInfo fi = new System.IO.FileInfo(XmlFileName);

int iSize = (int)fi.Length;

byte []img = new byte[iSize];

aXmlTextReader.ReadBinHex(img,0,iSize);

//Byte to image object

System.IO.MemoryStream ms = new System.IO.MemoryStream();

ms.Write(img,0,iSize);

Bitmap bmp = new Bitmap(ms);

ms.Close();

this.pictureBox1.Image = bmp;

}

aXmlTextReader.Close();

谢谢作者,哈哈,我“偷”过来,方便自己看;)

时间: 2024-08-01 19:19:43

如何把一个图像存储到XML数据中,并读取出来 by iCeSnaker - Program rhapsody的相关文章

使用XQuery查询DB2 XML数据

关于XQuery XQuery 在很多关键方面都与 SQL 有所不同,这很大程度上是因为这两种语言是针对两种具有不同特征的数据模型而设计的.XML 文档包含层次结构,并且有其固有的顺序.而基于 SQL 的数据库管理系统所支持的表格数据结构是平面的(flat),并且是基于集合的:因此,行之间不存在顺序. 这两种数据模型的不同导致它们各自的查询语言有很多基本的不同.例如,XQuery 支持路径表达式,以允许程序员在 XML 的层次结构中导航,而纯 SQL(没有 XML 扩展)则不支持.XQuery

使用XQuery查询DB2 XML数据_DB2

正在看的db2教程是:使用XQuery查询DB2 XML数据.关于 XQuery XQuery 在很多关键方面都与 SQL 有所不同,这很大程度上是因为这两种语言是针对两种具有不同特征的数据模型而设计的.XML 文档包含层次结构,并且有其固有的顺序.而基于 SQL 的数据库管理系统所支持的表格数据结构是平面的(flat),并且是基于集合的:因此,行之间不存在顺序. 这两种数据模型的不同导致它们各自的查询语言有很多基本的不同.例如,XQuery 支持路径表达式,以允许程序员在 XML 的层次结构中

利用Visual Basic操作XML数据

visual|xml|数据 什么是XML 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用. XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,XML仅仅是展示数据.事实上XML与其他数据表现形式最大的不同是:他极其简单.这是一个看上去有点琐细的优点,但正是

利用VisualBasic操作XML数据

visual|xml|数据 什么是XML 扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用. XML与Access,Oracle和SQL Server等数据库不同,数据库提供了更强有力的数据存储和分析能力,例如:数据索引.排序.查找.相关一致性等,XML仅仅是展示数据.事实上XML与其他数据表现形式最大的不同是:他极其简单.这是一个看上去有点琐细的优点,但正是

用OPENXML将XML数据转换为关联数据

从SQL Server 2000开始,微软开始支持XML类型的数据.在SQL Server2005中,微软延续了这一特性,并加强了对XML 数据列.XML变量以及XML索引的支持. 在数据库中存储XML数据是一个很出色的特征.对于大部分的数据处理需求来讲,将XML数据格式化为其它关联数据是十分重要.这也是引入OPENXML函数的原因.OPENXML是一个SQL Server提供的函数,它的作用是接收XML数据,提供内存中 XML数据的行集视图. 一个OPENXML函数用例 在下面的例子中,我们将

在SQLServer中用XQuery分解XML数据

在举例说明如何分解上一篇文章中的数据时,我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能. XQuery介绍 XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素.它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle.DB2和SQL Server. SQL Server 2005 XQuery函数 下面的四个函数是SQL Server 2005中的XQuery函数.(注意,XML.XQuery语句和下面的

在SQL Server 2005中用XQuery分解XML数据

本文讨论SQL Server 2005的新功能,它允许你将XML数据分解到关系格式中,而不必耗用太多内存.我们首先了解一下XQuery和它在SQL Server 2005中为开发者提供的功能. XQuery介绍 XQuery,也称作XML Query,是一种查询XML数据的语言,允许你提取所需的节点和元素.它由W3C定义,可用于今天的大多数主流数据库引擎中,如Oracle.DB2和SQL Server. SQL Server 2005 XQuery函数 下面的四个函数是SQL Server 20

xml数据岛绑定时的超链接处理

在写地图空间搜索的时候,用ajax返回的数据结果,除了要在地图上标点之外 还需要 用传统的表格方式罗列,并且可以点击察看信息,因为需要对返回结果的 处理足够灵活,所以不能在js当中写死格式.这里用了xml数据岛的方式(系统是 只需要考虑IE)只把要用到xml数据信息返回,具体怎么在html页面上布局可以由 其它开发人员自己订制. 下面代码去掉了ajax的部分,只简单的演示如何生成一个xml数据岛,以及如 何和html表格绑定,并显示出相关的链接信息.其中链接的href内容可以保存在 xml数据中

android-动态的删除一个图像出现的问题

问题描述 动态的删除一个图像出现的问题 程序中的 oncreate 方法 @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); getWindow().setFor