posts - 41,comments - 81,trackbacks - 6

现在做一个项目,完全使用XSD,如果采用Image 默认的byte[]  方式输出成XML ,就会很崩溃,会输出如下:

<Image>

     <byte>-1</byte>
     <byte>-12</byte>
     <byte>158</byte>
     <byte>-2</byte>
     <byte>222</byte>

     ..........................

     <byte>-1</byte>

</Image>

一张 290× 200 的图片,Jpeg 格式,大约需要输出14万行的byte 数组。图片还不到20K,但输出的字符串却大约有600K。这样的方案于情于理是完全说不通的。

解决办法:

     采用目前比较流行的Base64 方式,将byte[] 数组转换为字符串,这样就减少了输出,同时也不受机器Code 的影响。

转换代码:

Image --> Base64String

Code

 

Base64String --> Image

Code
posted @ 2008-10-31 12:04 李佩亮 阅读(630) 评论(0) 编辑

发现在XSD 中,节点为Image 类型,转换出的cs 代码中却是 sbyte[] 类型的。

查阅MSDN ,告知sbyte 和 byte 需要显示转换。

由查阅网上不少文章,发现大家碰到这个转换,大多都采用 for 循环解决。-_-!

(了解至此我异常崩溃,由于要转换图片,数组的Lenght大约有20万条)。

 

不过有幸翻到了一个老外写的转换代码,非常好使,两行搞定,遂共享给大家:

Code
posted @ 2008-10-31 11:10 李佩亮 阅读(211) 评论(0) 编辑