From d4c347b19e23ee875c7e8894c6e698ade1ea1f64 Mon Sep 17 00:00:00 2001 From: kwai Date: Fri, 25 Aug 2023 19:06:39 +0800 Subject: [PATCH] block --- .../Helpers/BitmapHelper.cs | 41 +++++++++++++++++++ .../Serializables/SelectableItemBase.cs | 18 ++++++++ 2 files changed, 59 insertions(+) diff --git a/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs b/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs index 5ab7b2b..dcf6dc2 100644 --- a/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs +++ b/AIStudio.Wpf.DiagramDesigner/Helpers/BitmapHelper.cs @@ -192,5 +192,46 @@ namespace AIStudio.Wpf.DiagramDesigner } } + public static string ToBase64String(this BitmapImage bitmap) + { + byte[] bytearray = null; + Stream smarket = bitmap.StreamSource; + if (smarket != null && smarket.Length > 0) + { + //设置当前位置 + smarket.Position = 0; + using (BinaryReader br = new BinaryReader(smarket)) + { + bytearray = br.ReadBytes((int)smarket.Length); + } + } + return Convert.ToBase64String(bytearray); + } + + public static BitmapImage ToBitmapImage(this string base64String, int width = 0, int height =0) + { + if (string.IsNullOrEmpty(base64String)) + return null; + + try + { + var byteArray = Convert.FromBase64String(base64String); + BitmapImage bitmapImage = null; + bitmapImage = new BitmapImage(); + bitmapImage.BeginInit(); + bitmapImage.CreateOptions = BitmapCreateOptions.IgnoreColorProfile; + bitmapImage.CacheOption = BitmapCacheOption.OnLoad; + bitmapImage.DecodePixelWidth = width;//需要缩略图的解码宽度 + bitmapImage.DecodePixelHeight = height;//缩略图的解码高度 + bitmapImage.StreamSource = new MemoryStream(byteArray); + bitmapImage.EndInit(); + + return bitmapImage; + } + catch + { + return null; + } + } } } diff --git a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs index ce71f1c..6278390 100644 --- a/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs +++ b/AIStudio.Wpf.DiagramDesigner/Models/Serializables/SelectableItemBase.cs @@ -12,6 +12,7 @@ using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; +using System.Windows.Media.Imaging; using System.Xml; using System.Xml.Serialization; @@ -646,6 +647,23 @@ namespace AIStudio.Wpf.DiagramDesigner return new Matrix(double.Parse(pieces[0]), double.Parse(pieces[1]), double.Parse(pieces[2]), double.Parse(pieces[3]), double.Parse(pieces[4]), double.Parse(pieces[5])); } + public static string SerializeBitmapImage(BitmapImage bitmapImage) + { + return bitmapImage.ToBase64String(); + } + + public static BitmapImage DeserializeBitmapImage(string bitmapImagestring) + { + try + { + return bitmapImagestring.ToBitmapImage(); + } + catch + { + return null; + } + } + public static string SerializeObject(object obj, string serializableType = null) { if (serializableType?.ToLower() == ".xml")