00s_tag_label>
00s_tag_label>
.NET, XML,base64, 인코딩, 디코딩, 이미지,저장,로딩,XML 저장, XML 수정 ,C#, C sharp, 프로그래밍, XML Save,Encode, Decode, XmlDocument Class
본 포스트에서는 C#을 사용하여 XML에 이미지를 저장하고 가져오는 방법을 소개하고자합니다.
알고리즘은 이미지를 바이너리형태로 로딩한 후 Base64로 인코딩(Encoding)을 하여 문자열 형태로 XML에 저장하며 반대로 가져올 경우는 Base64로 인코딩 된 문자열을 Base64로 디코딩(Decoding)하여 바이너리로 복원합니다.
이미지가 아닌 일반 문자열의 경우는 Base64로 인코딩 하고 다시 디코딩만 하면 됩니다.
1. System.Xml 네임스페이스를 참조하는지 않을 경우는 아래 네임스페이스를 추가합니다.
2. Base64 관련 메서드는 Convert 클래스의 ToBase64String(인코딩) 메서드와 FromBase64String(디코딩)를 사용합니다.
3. XmlDocument 클래스의 SelectNodes 메서드를 사용해서 XML화일을 검색 합니다.
4. 사용된 XML 화일 구조
5. C# XML 다루기 소스 코드
.NET, XML,base64, 인코딩, 디코딩, 이미지,저장,로딩,XML 저장, XML 수정 ,C#, C sharp, 프로그래밍, XML Save,Encode, Decode, XmlDocument Class
본 포스트에서는 C#을 사용하여 XML에 이미지를 저장하고 가져오는 방법을 소개하고자합니다.
알고리즘은 이미지를 바이너리형태로 로딩한 후 Base64로 인코딩(Encoding)을 하여 문자열 형태로 XML에 저장하며 반대로 가져올 경우는 Base64로 인코딩 된 문자열을 Base64로 디코딩(Decoding)하여 바이너리로 복원합니다.
이미지가 아닌 일반 문자열의 경우는 Base64로 인코딩 하고 다시 디코딩만 하면 됩니다.
1. System.Xml 네임스페이스를 참조하는지 않을 경우는 아래 네임스페이스를 추가합니다.
-
using System.Xml; using System.Drawing.Imaging; using System.IO;
2. Base64 관련 메서드는 Convert 클래스의 ToBase64String(인코딩) 메서드와 FromBase64String(디코딩)를 사용합니다.
-
public static string ToBase64String(byte[] inArray) public static byte[] FromBase64String(string s)
3. XmlDocument 클래스의 SelectNodes 메서드를 사용해서 XML화일을 검색 합니다.
-
myXmlDocument.SelectNodes("//CATEGORY_LIST//CATEGORY_NAME")
4. 사용된 XML 화일 구조
-
<category_list> <category_name>all4cs.tistory.com</category_name> <category_name>Notice</category_name> <category_name>Guest Book</category_name> <category_name>C Sharp(C#)</category_name> <category_name>Javascript</category_name> <category_name>Flash Game</category_name> <category_name>ORIGAMI</category_name> <category_name>IT/WEB</category_name> <category_name>Photos</category_name> </category_list>
5. C# XML 다루기 소스 코드
private void button1_Click(object sender, EventArgs e) { Bitmap bmp = new Bitmap(@"D:\My Documents\My Pictures\bb.bmp"); string picString = ""; using (MemoryStream m = new MemoryStream()) { bmp.Save(m, ImageFormat.Png); picString = Convert.ToBase64String(m.ToArray()); m.Close(); } bmp.Dispose(); XmlDocument xDoc = new XmlDocument(); xDoc.Load(Application.StartupPath + @"\crew_info.xml"); XmlNode xnode = xDoc.SelectSingleNode("//Crew//Picture"); xnode.InnerText = picString; byte[] byteArr = System.Text.Encoding.Unicode.GetBytes("홍길동"); XmlNode xnode1 = xDoc.SelectSingleNode("//Crew//Name"); string str = System.Convert.ToBase64String(byteArr); xnode1.InnerText = str; xDoc.Save(Application.StartupPath + @"\crew_info.xml"); } private void button2_Click(object sender, EventArgs e) { string picString = ""; XmlDocument xDoc = new XmlDocument(); xDoc.Load(Application.StartupPath + @"\crew_info.xml"); XmlNode xnode = xDoc.SelectSingleNode("//Crew//Picture"); picString = xnode.InnerText; byte[] bytes = Convert.FromBase64String(picString); Bitmap bmp2 = null; using (MemoryStream m = new MemoryStream(bytes)) { Bitmap bmpTmp = new Bitmap(m); bmp2 = new Bitmap(bmpTmp); bmpTmp.Dispose(); m.Close(); } this.BackgroundImage = bmp2; xnode = xDoc.SelectSingleNode("//Crew//Name"); byte[] byteArr = Convert.FromBase64String(xnode.InnerText); textBox1.Text = System.Text.Encoding.Unicode.GetString(byteArr); }
C# XML에 이미지 저장 및 가져오기(Base64 인코딩 디코딩)
http://all4cs.tistory.com - 두그미의 사는 이야기
'IT' 카테고리의 다른 글
C# 아웃룩(Outlook) 메일 MSG(.msg) 화일로 저장하기 (11) | 2012.02.20 |
---|---|
C# XML 저장, 로딩 및 수정 / C# How To Modify and Save XML in the .NET (10) | 2012.01.13 |
C# 프로그램 중복 실행 방지 Mutex / C# Using a mutex to prevent multiple application from running (4) | 2011.11.18 |
C# 윈도우 시작프로그램 등록, 삭제 / C# Add,Remove registry entries for windows startup (5) | 2011.11.03 |
C# 외부 프로그램 종료하기 / C# Process.GetProcessesByName (0) | 2011.10.21 |