При записи иконки в Base64 получаются битыми - C#
Формулировка задачи:
Icon->byte[]
byte[]->Base64
Base64->byte[]
byte[]->Icon
public static byte[] ToByteArray(this Icon icon) { using (MemoryStream ms = new MemoryStream()) { icon.Save(ms); return ms.GetBuffer(); } }
if (Current.Icon != null) { Writer.WriteStartElement("Icon"); var buffer = Current.Icon.ToByteArray(); Writer.WriteBase64(buffer, 0, buffer.Length); Writer.WriteEndElement(); }
if (AppContentReader.IsStartElement("Icon")) using (var OS = new MemoryStream()) using (var bw = new BinaryWriter(OS)) { int ReadBytes = 0; byte[] buffer = new byte[100]; while ((ReadBytes = AppContentReader.ReadElementContentAsBase64(buffer, 0, 50)) > 0) bw.Write(buffer, 0, ReadBytes); CurrentApp.Icon = OS.GetBuffer().ToIcon(); }
public static Icon ToIcon(this byte[] bytes) { using (MemoryStream ms = new MemoryStream(bytes)) return new Icon(ms); }
Решение задачи: «При записи иконки в Base64 получаются битыми»
textual
Листинг программы
public static byte[] ToByteArray(this Icon icon) { using (MemoryStream ms = new MemoryStream()) { icon.ToBitmap().Save(ms, ImageFormat.Png); return ms.GetBuffer(); } } public static Icon ToIcon(this byte[] bytes) { using (MemoryStream ms = new MemoryStream(bytes)) return Icon.FromHandle(new Bitmap(ms).GetHicon()); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д