Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xml序列化的
/// <summary>
/// Image(支持 XML 序列化)
/// </summary>
[XmlRoot("XmlImage")]
public class XmlImage : IXmlSerializable
{
public System.Drawing.Image Image { get; set; } #region 构造函数 public XmlImage()
{ } protected XmlImage(SerializationInfo info, StreamingContext context)
{ }
#endregion 构造函数 #region IXmlSerializable Members
public XmlSchema GetSchema() => null; /// <summary>
/// 从对象的 XML 表示形式生成该对象(反序列化)
/// </summary>
/// <param name="xr"></param>
public void ReadXml(XmlReader xr)
{
if (xr.IsEmptyElement)
return;
xr.ReadToFollowing(nameof(XmlImage));
Image = FromBase64String(xr.ReadElementContentAsString());
xr.ReadEndElement();
} /// <summary>
/// 将对象转换为其 XML 表示形式(序列化)
/// </summary>
/// <param name="xw"></param>
public void WriteXml(XmlWriter xw)
{
xw.WriteStartElement(nameof(XmlImage));
xw.WriteValue(ToBase64String(Image, ImageFormat.Png));
xw.WriteEndElement();
}
#endregion IXmlSerializable Members private static string ToBase64String(System.Drawing.Image img, ImageFormat format)
{
if (img != null)
{
using (var ms = new MemoryStream())
{
img.Save(ms, format);
byte[] buffer = ms.ToArray();
return Convert.ToBase64String(buffer);
}
}
return string.Empty;
} private static System.Drawing.Image FromBase64String(string base64Str)
{
System.Drawing.Image img = null;
using (var ms = new MemoryStream())
{
try
{
var buffer = Convert.FromBase64String(base64Str);
ms.Write(buffer, , buffer.Length);
img = System.Drawing.Image.FromStream(ms);
}
catch
{
// ignored
}
}
return img;
}
}
Image(支持 XML 序列化),注意C#中原生的Image类是无法进行Xml序列化的的更多相关文章
- Dictionary(支持 XML 序列化),注意C#中原生的Dictionary类是无法进行Xml序列化的
/// <summary> /// Dictionary(支持 XML 序列化) /// </summary> /// <typeparam name="TKe ...
- 利用JavaScriptSerializer类 进行Json对象的序列化和反序列化和过滤
项目下载:JavaScriptSerializer_对JSON对象序列化与反序列化及过滤器 利用<JavascriptSerializer类> 进行Json对象的序列化和反序列化 1. 首 ...
- .net的XML对象序列化VS WCF中xml序列化问题
整理一下 .net 对象序列化注意事项: 1. 字段:必须是 public类型 2.属性:只读或者只写的属性不被序列化,只有 可读可写并且赋值的才可以 序列化: Someclass obj = new ...
- 根据JavaScript中原生的XMLHttpRequest实现jQuery的Ajax
基本介绍 XmlHttpRequest XmlHttpRequest是JavaScript中原生的,历史悠久的一种发送网络请求的方案. 基本上所有前端框架对于网络请求的部分都是基于它来完成的. 在本章 ...
- Spring 中的事务操作、注解、以及 XML 配置
事务 事务全称叫数据库事务,是数据库并发控制时的基本单位,它是一个操作集合,这些操作要么不执行,要么都执行,不可分割.例如我们的转账这个业务,就需要进行数据库事务的处理. 转账中至少会涉及到两条 SQ ...
- 【翻译自nikic大神】PHP中原生类型的方法
引言 第一次,翻译别人的文章,用四级英语的水平来翻译~~囧,可能有很多不太恰当的地方,尽管拍砖(有些地方实在想不到恰当的翻译,我同时贴出了原文和自己很low的翻译). 翻译这篇文章用了我3个晚上一个中 ...
- 序列化在Netty中的使用
Java序列化的缺点 1.无法跨语言 对于Java序列化后的字节数组,别的语言无法进行反序列化 2.序列化后的码流过大 3.序列化性能低 使用JDK自带的序列化进行对象的传输 被传输的,实现了序列化接 ...
- IOS学习:ios中的数据持久化初级(文件、xml、json、sqlite、CoreData)
IOS学习:ios中的数据持久化初级(文件.xml.json.sqlite.CoreData) 分类: ios开发学习2013-05-30 10:03 2316人阅读 评论(2) 收藏 举报 iOSX ...
- JAVA序列化与反序列化三种格式存取(默认格式、XML格式、JSON格式)
什么是序列化 java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输.或者持久化存储到数据库或文件系统中:然后在需要的时候 ...
随机推荐
- 使用远程线程来注入DLL
使用远程线程来注入DLL DLL注入技术要求我们目标进程中的一个线程调用LoadLibrary来载入我们想要的DLL (1)用OpenProcess函数打开目标进程(2)用VirtualAllocEx ...
- F - 棋盘问题
F - 棋盘问题 Time Limit:1000MS Memory Limit:10000KB 64bit IO Format:%I64d & %I64u Submit Sta ...
- B - Simple Game
B - Simple Game Time Limit:1000MS Memory Limit:262144KB 64bit IO Format:%I64d & %I64u Su ...
- asp.net mvc cookie超时返回登录页面问题
filterContext.HttpContext.Response.Write("<script>top.location.href = '/Login/Index';< ...
- CPU密集型和IO密集型
对于Python如果是CPU密集型应该用多进程模型(大量的计算) 如果是IO密集型应该用多线程模型(数据的读取写入.网络IO数据传输) 由于GIL的存在,CPython不能有效的利用多核处理器,表 ...
- 在windwo server2008服务器上配置ftp服务器、及配置phpstrom工具、实现项目同步。
在windwo server2008服务器上配置ftp服务器.及配置phpstrom工具.实现项目同步. 在windwo server2008服务器上配置ftp服务器 参考该篇文章:http://bl ...
- 【原】:关于使用springmvc的responseBody注解返回json的一些总结
配置不正确可能会出现406错误 1:首先需要导入三个jar包: 2:需要在springmvc的配置文件文件中添加转换器并开启注解驱动: 3:controller:这里返回object也是可以的; 4: ...
- 3DMAX可编辑多边形常用命令-桥
桥命令可以连接连个面 下图两个cube(可编辑多边形)已经被附加到一起,选中相对的两个面,点击桥 结果
- [Xcode 实际操作]七、文件与数据-(10)NSkeyedArchiver存储和解析数据,Swift对象的归档和恢复归档
目录:[Swift]Xcode实际操作 本文将演示如何使用归档的方法,对模型对象进行持久化工作. 在项目名称上点击鼠标右键,弹出右键菜单,选择[New File]新建文件命令, 在弹出的模板选项窗口中 ...
- IT兄弟连 JavaWeb教程 AJAX以及JSON字符串经典案例
案例需求:客户端发送AJAX请求服务器端获取用户信息的数据. 案例实现: 在服务器端要将Java对象转换成JSON字符串,如果使用拼接JSON字符串的方式非常繁琐,并且非常容易出错,所以一般会借助第三 ...