如果未选择,则保存默认图像

时间:2015-05-12 23:58:44

标签: c# .net sql-server wpf

我有以下情况:

用于显示图像的Image控件和用于选择它的打开文件对话框的按钮。之后该图像将保存到数据库中。但是,如果用户没有选择任何图像,我该如何显示默认图像并以与选择它相同的方式保存?

byte[] dtImagem = null;

private void btnAddImg(object sender, RoutedEventArgs e)
{
    OpenFileDialog _fd = new OpenFileDialog();

    if (_fd.ShowDialog() == true)
    {
        try
        {
            _fs = new FileStream(_fd.FileName, FileMode.Open, FileAccess.Read);
            dtImagem = new byte[_fs.Length];
            _fs.Read(dadosImagem, 0, System.Convert.ToInt32(_fs.Length));
            _fs.Close();

            ImageSourceConverter imgs = new ImageSourceConverter();
            imgPessoa.SetValue(Image.SourceProperty, imgs.ConvertFromString(_fd.FileName.ToString()));
        }
        catch (Exception ex)
        {
            MessageBox.Show("Erro :: " + ex.Message);
        }                          
    }
    else
    {
        //Here is the problem how can i use dtImage and save it on database?
        var uri = new Uri(@"/AppWPF;component/Images/images.png");
        ImageSourceConverter imgs = new ImageSourceConverter();
        imgPessoa.SetValue(Image.SourceProperty,imgs.ConvertFromString(uri.ToString()));
    }
}

我插入数据库的代码有效,我只需要一种方法来添加默认图像,如果用户不选择

1 个答案:

答案 0 :(得分:1)

可能最好从头开始使用默认值初始化图像,并将图像显示给用户,以便他们知道将要保存的内容。您可以同时初始化dtImagem。这样你就不需要else中的btnAddImg,也许只需要额外的按钮就可以将图像重置为默认值...但这取决于你:)

要回答你的问题 - 如何从资源中获取字节数组的答案是:

var info = Application.GetResourceStream(uri);
using (var memoryStream = new MemoryStream())
{
    info.Stream.CopyTo(memoryStream);
    dtImagem = memoryStream.ToArray();
}