/** * バイナリログの画像ID情報を読み込む */ private MemIconImages ReadLogImagesBin(UFileStream fs) { MemIconImages _images = new MemIconImages(); // 件数取得 int size = fs.GetInt32(); for (int i = 0; i < size; i++) { // 1件分のログを取得 MemIconImage image = new MemIconImage(); // 名前 image.Name = fs.GetSizeString(); // 画像 int imageSize = fs.GetInt32(); if (imageSize > 0) { byte[] byteImage = fs.GetBytes(imageSize); image.SetByteImage(byteImage); } _images.Add(image); } return(_images); }
/** * 1行分のIconImage情報を取得する */ private MemIconImages GetIconImagesText(StreamReader sr) { MemIconImages _images = new MemIconImages(); while (!sr.EndOfStream) { string line = sr.ReadLine().Trim(); Dictionary <string, string> fields = SplitLineStr(line); if (fields.Count == 0) { continue; } // 終了判定 if (line.Equals("</image>")) { break; } // 画像情報を取得 MemIconImage image = new MemIconImage(); foreach (KeyValuePair <string, string> kvp in fields) { // keyとvalueに分割 if (kvp.Value != null) { switch (kvp.Key.ToLower()) { case "name": image.Name = kvp.Value; break; case "image": try { // Base64文字列を出コード byte[] byteImage = Convert.FromBase64String(kvp.Value); image.SetByteImage(byteImage); } catch (Exception e) { Console.WriteLine("base64のデコードに失敗しました。"); } break; } } } _images.Add(image); } return(_images); }