Я работаю над классом, который поддерживает словарь изображений.
Этот словарь должен быть сохранен и загружен из файла.
Я реализовал приведенное ниже решение, но проблема в том, что согласно MSDN
документация для Image.FromStream ();
http://msdn.microsoft.com/en-us/library/93z9ee4x(v=VS.80).aspx
«Поток сбрасывается в ноль, если этот метод вызывается последовательно с одним и тем же потоком.»
Есть идеи как это исправить? Скорость загрузки словаря критична.
class ImageDictionary
{
private Dictionary<string, Image> dict = new Dictionary<string, Image>();
public void AddImage(string resourceName, string filename)
{
//...
}
public Image GetImage(string resourceName)
{
//...
}
public void Save(string filename)
{
var stream = new FileStream(filename, FileMode.Create);
var writer = new BinaryWriter(stream);
writer.Write((Int32) dict.Count);
foreach (string key in dict.Keys)
{
writer.Write(key);
Image img;
dict.TryGetValue(key, out img);
img.Save(stream,System.Drawing.Imaging.ImageFormat.Png);
}
writer.Close();
stream.Close();
}
public void Load(string filename)
{
var stream = new FileStream(filename, FileMode.Open);
var reader = new BinaryReader(stream);
Int32 count = reader.ReadInt32();
dict.Clear();
for (int i = 0; i < count; i++)
{
string key = reader.ReadString();
Image img = Image.FromStream(stream);
dict.Add(key, img);
}
reader.Close();
stream.Close();
}
}