Как сохранить изображение в Property.Settings.Default?
Как я могу сохранить изображение в Property.Settings.Default
?
Какой тип данных мне следует использовать?
3 ответа
Как я уже говорил ранее: лучше использовать ресурсы. Вот руководство по использованию встроенных ресурсов:
Перейдите на вкладку "Ресурсы" вместо вкладки "Настройки" и добавьте изображение оттуда. Если у вас еще не создан файл ресурсов по умолчанию, нажмите на ссылку, и она будет создана для вас. Выберите "Изображения" для типа ресурса (из раскрывающегося списка выше), а затем добавьте существующий ресурс (из соседнего раскрывающегося списка).
Вы можете получить доступ к ресурсу из вашей программы, используя следующий код (статический класс Properties.Resource
):
Bitmap image = Properties.Resources.MyJPGImage;
Вы также можете получить доступ к ресурсам через отражения от других сборок... попробуйте взглянуть на полный пример этого (включая изображения) в Microsoft
Попробуй это
var base64 = string.Empty;
using (MemoryStream ms = new MemoryStream())
{
yourImage.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
base64 = Convert.ToBase64String(ms.ToArray());
}
Создать строковую переменную из файла настроек, например. MyImage
Properties.Settings.Default.MyImage = base64;
Properties.Settings.Default.Save();
РЕДАКТИРОВАТЬ:
pictureBox1.Image = GetImage(Properties.Settings.Default.MyImage);
public Image GetImage(string value)
{
byte[] bytes = Convert.FromBase64String(value);
Image image;
using (MemoryStream ms = new MemoryStream(bytes))
{
image = Image.FromStream(ms);
}
return image;
}
Вы не можете сделать это по умолчанию (редактор не позволяет вам выбрать byte[]
как тип данных). Вы можете редактировать XML из файла настроек, чтобы включить байтовый массив. Вы можете сериализовать и десериализовать это снова на вашем конце.
Если вы хотите установить значение по умолчанию в файле настроек, вам нужно указать строку в кодировке base64.
Это будет необходимый формат для настройки в файле настроек:
<Setting Name="Setting" Type="System.Byte[]" mimetype="application/x-microsoft.net.object.bytearray.base64" Scope="User">
<Value Profile="(Default)">
iVBOR...
</Value>
</Setting>
Используйте эту опцию, только если вам действительно нужно. Если возможно, просто сохраните путь к файлу в настройках и сохраните файл снаружи, например, в папке данных, помимо ваших настроек.