zoukankan      html  css  js  c++  java
  • 把BitmapSource图片数据保存到文件

    实现函数:

            /// <summary>
            /// 保存图片到文件
            /// </summary>
            /// <param name="image">图片数据</param>
            /// <param name="filePath">保存路径</param>
            private void SaveImageToFile(BitmapSource image, string filePath)
            {
                BitmapEncoder encoder = GetBitmapEncoder(filePath);
                encoder.Frames.Add(BitmapFrame.Create(image));
    
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    encoder.Save(stream);
                }
            }
    
            /// <summary>
            /// 根据文件扩展名获取图片编码器
            /// </summary>
            /// <param name="filePath">文件路径</param>
            /// <returns>图片编码器</returns>
            private BitmapEncoder GetBitmapEncoder(string filePath)
            {
                var extName = Path.GetExtension(filePath).ToLower();
                if (extName.Equals(".png"))
                {
                    return new PngBitmapEncoder();
                }
                else
                {
                    return new JpegBitmapEncoder();
                }
            }

    最终调用的方法:

            /// <summary>
            /// 保存图片菜单点击事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void menuSaveImage_Click(object sender, RoutedEventArgs e)
            {
                try
                {
                    if (imageData == null)
                    {
                        return;
                    }
    
                    var dlg = new Microsoft.Win32.SaveFileDialog();
                    dlg.Filter = "PNG图片(*.png)|*.png|JPEG图片(*.jpg)|*.jpg|所有文件(*.*)|*.*";
                    var rst = dlg.ShowDialog();
                    if (rst == true)
                    {
                        var fileName = dlg.FileName;
    
                        SaveImageToFile(imageData, fileName);
                        MessageBox.Show("保存成功");
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex);
                    MessageBox.Show(ex.Message);
                }
            }
  • 相关阅读:
    Falsk的模板分配和蓝图、定制错误信息、 和补充
    Flask配置文件和 路由系统
    初始Flask
    REST Framework组件的解析源码
    MdelForm 和formset
    待修改脚本
    时间打点脚本
    Move Over and Click Link
    Wait and Click Element
    Strings=newString(“xyz”);创建了几个 StringObject?
  • 原文地址:https://www.cnblogs.com/wzwyc/p/8807546.html
Copyright © 2011-2022 走看看