首页
学习
活动
专区
圈层
工具
发布

silverlight中如何将BitmapImage转化为Stream或byte数组?

上一篇"base64编码在silverlight中的使用"里已经提到WriteableBitmap对象可以借助FluxJpeg转化为base64字符串,而WriteableBitmap又能从BitmapSource...问题解决了 先将BitmapImage转化为WriteableBitmap,然后得到base64字符串,然后可以得到base64的byte[]数组,再然后您可以把byte[]变成Stream 关键代码:...freeware)http://www.CodeHighlighter.com/-->1 WriteableBitmap wb = new WriteableBitmap(img.Source as BitmapSource...);//将Image对象转换为WriteableBitmap byte[] b = Convert.FromBase64String(GetBase64Image(wb));//得到byte数组 将byte...//这里的b为上面生成的base64编码的byte数组 2 MemoryStream ms = new MemoryStream(b); 3 BitmapImage bitImage = new BitmapImage

1.4K50

WPF图片处理相关

有两种实现方式: 将释非代码放到构造函数析构函数中,由系统自动调用,系统会在资源对象不再使用了,会在某个时间调用构造函数析构函数来释放非托管资源。构造函数析构函数的目的就是用来释放或清理非托管资源的。...将释非代码放到另外一个函数中,当自己想调用时就调用。将释非代码放在一个方法中共用。...您可以通过使用 Bitmap 构造函数之一,从文件、流和其他源创建图像,并使用 Save 方法将它们保存到流或文件系统。...使用 Graphics 对象的 DrawImage 方法将图像绘制到屏幕或内存。 Bitmap是从Image类继承的一个图像类,它封装了Windows位图操作的常用功能。...BitmapSource 可以是解码器提供的图像文件中的单个帧,也可以是操作自身 BitmapSource 的转换的结果。 BitmapSource 不用于表示多帧图像或动画。

4.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    WPF实现基础控件之托盘的示例代码分享

    创建窗体(本质上托盘在创建时需要一个窗口句柄,完全可以将主窗体的句柄给进去,但是为了更好的管理消息以及托盘的生命周期,通常会创建一个独立不可见的窗口)CreateWindowEx。...int _TrayMouseMessage;        //窗口句柄        private IntPtr _TrayWindowHandle = IntPtr.Zero;        //通过注册窗口消息可以获取唯一标识...(bitmapSource is BitmapImage bitmapImage))            {                bitmapImage = new BitmapImage(... bitmapSource = bmp;                    //if (bitmapSource.Format !...= PixelFormats.Pbgra32)                    //    bitmapSource = new FormatConvertedBitmap(bitmapSource

    1K00

    WPF内存优化

    自定义控件里面有Image、BitMapSource属性值之类或者引用类属性时,要手动删除并设置为空 CustomControl cc = new CustomControl(); BitMapSource...在Image里面使用BitMapImage时要用 BitmapImage bi = new BitmapImage(); bi.BeginInit(); bi.CacheOption = BitmapCacheOption.OnLoad...,请参阅通过使用 StaticResource 标记扩展或 DynamicResource 标记扩展应用程序资源的 WPF 应用程序。...运行使用树视图控件或控件派生于的 WPF 应用程序,选择器类。 将控件注册为控制中的键盘焦点的内部通知在KeyboardNavigation类。 该应用程序创建这些控件的很多。...解决方案: 修改加载方式 public static BitmapImage GetImage(string imagePath) { BitmapImage bitmap = new BitmapImage

    2.2K41

    C#.NET 如何获取一个异常(Exception)的关键特征,用来判断两个异常是否表示同一个异常

    本文将提供一个方法,将异常的关键信息提取出来,这样可以比较多次抛出的不同的异常实例是否表示的是同一个异常。...(BitmapSource source) 在 Walterlv.Demo.Exceptions.Foo.Take(string fileName) 在英文的系统上,拿到的结果可能是这样的: 1...(BitmapSource source) at Walterlv.Demo.Exceptions.Foo.Take(string fileName) 这样,我们就不能使用 ToString()...p.ParameterType.Name} {p.Name}"))})"); return (type, frames.ToList()); } 一个是拿到 Exception 实例的类型名称,通过...由于 Exception.StackTrace 属性得到的是一个字符串,而且此字符串还真的有可能根本不是异常信息呢,所以我们这里通过创建一个 StackTrace 的实例来从异常中获取真实的堆栈,当然如果拿不到我们这里使用空数组来表示

    1.1K30

    dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程

    本文将通过 WPF 框架源代码告诉大家为什么会锁住主线程 这是在 WPF 开源仓库上一个小伙伴报的,详细请看 WriteableBitmap hangs when source bitmap is rendered...就会锁住主线程,最简单的代码如下 Task.Run(() => { var image = new BitmapImage(new Uri(fileName));...可以从上面代码看到,主线程在等待后台线程的锁,而后台线程需要等待主线程返回才能释放锁 其实在后台线程创建图片,同时创建的图片的参数还是在主线程使用的图片,这样的逻辑不多,更多使用的是只在后台线程创建图片然后通过...预热用来解决后台线程创建 MediaContext 需要等待主线程,通过预先创建,此时可以等待到主线程,如下面代码 Dispatcher backgroundDispatcher = null!...PixelFormats.Bgr32, null)); backgroundDispatcher.InvokeAsync(() => { var image = new BitmapImage

    76120

    WPF 使用不安全代码快速从数组转 WriteableBitmap

    本文告诉大家一个快速的方法,直接把数组转 WriteableBitmap 先来说下以前的方法,以前使用的是 BitmapSource ,这个方法是大法官方提供的。...使用不安全代码转换是把数组直接复制到WriteableBitmap,请看使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用 - walterlv...,这里讲了如何从 Bitmap 转 WriteableBitmap ,于是下面只需要把数组转 Bitmap 就可以了。...对比一下性能,这时原先的 BitmapSource 方法占用内存 ? 这是使用不安全代码占用内存 ? 实际跑一张 gif 图的性能 ?..._source.Unlock(); } } 实际上微软已经提供了不安全代码的转换,请看下面代码 bitmapImage.WritePixels

    1.2K10

    WPF Image控件的绑定

    在我们平时的开发中会经常用到Image控件,通过设置Image控件的Source属性,我们可以加载图片,设置Image的source属性时可以使用相对路径也可以使用绝对路径,一般情况下建议使用绝对路径...Source属性上面,我们首先要搞清楚Source的类型是什么,public ImageSource Source { get; set; }也就是ImageSource类型,当然在我们绑定的时候用的最多的就是BitmapImage...这个位图图像啦,我们首先来看看BitmapImage的继承关系:BitmapImage:BitmapSource:ImageSource,最终也是一种ImageSource类型。...当然在我们的Model层中我们也可以直接定义一个BitmapImage的属性,然后将这个属性直接绑定到Image的Source上面,当然这篇文章我们定义了一个ImgSource的String类型,所以必须要定义一个转换器...string.IsNullOrEmpty(path)) { return new BitmapImage(new Uri(path, UriKind.Relative

    2.3K10

    base64编码在silverlight中的使用

    在传统的.net应用中,使用base64编码字符串是一件很轻松的事情,比如下面这段代码演示了如何将本地文件转化为base64字符串,并且将base64字符串又还原为图片文件. base64编码在传统.net...("c:\\self2.png", ImageFormat.Png);             Console.Read();         } /// /// 将文件转换为...bitmap;         }     } } 但是到了silverlight环境中,这种简单的操作方式却无法使用了,幸好网上有一个开源的免费组件FluxJpeg,同时国外有高人已经利用该组件写出了将位图转化为...Convert.FromBase64String(txtBase64.Text);                 MemoryStream ms = new MemoryStream(b);                 BitmapImage... bitImage = new BitmapImage();                 bitImage.SetSource(ms);                 img2.Source =

    2K70

    WPF 尝试使用 WinML 做一个简单的手写数字识别应用

    GPU 或其他加速设备的硬件加速,还可以在设备硬件缺失或不允许的情况下自动调度到 CPU 上运行 接下来我将演示的代码是采用 WinRT 的方式调用 WinML 层。...类型,决定采用什么样的设备去执行模型,可选参数如下 Cpu:使用 CPU 执行模型 Default:默认,让系统自己选择使用设备,也就是比较推荐的方法 DirectX : 使用 GPU 或其他的...set; } public LearningModelBinding LearningModelBinding { get; set; } 在点击识别按钮,就需要将 InkCanvas 内容转换为...以上的 stride 可以认为是 2D 图片里面的每一行使用的 byte 数量 拿到像素数组之后,转换为 Windows.Storage.Streams.IBuffer 对象,用于创建 SoftwareBitmap...lindexi_gd.git git pull origin 29df54af3d2471c002303eb412372b844b0708bc 以上使用的是 gitee 的源,如果 gitee 不能访问,请替换为

    91810

    【详解】PowerShell基本命令和绕过权限执行

    本文将介绍一些常用的 PowerShell 基本命令,并探讨如何在遇到权限限制时绕过这些限制执行脚本。PowerShell 基本命令1. 获取帮助​Get-Help​​:获取命令的帮助信息。...使用 ​​-EncodedCommand​​ 参数绕过执行策略如果你有一个需要执行的脚本,但不想或不能更改系统的执行策略,可以将脚本转换为 Base64 编码的字符串,并通过 ​​-EncodedCommand​​...你可以先将这段脚本转换为 Base64 字符串,然后通过命令行执行:powershell -EncodedCommand SG9sZCwgd29ybGQh虽然上述方法可以帮助你在某些情况下执行 PowerShell...下面将详细介绍一些基本的 PowerShell 命令以及如何在遇到权限限制时绕过这些限制执行代码。...powershell -ExecutionPolicy Bypass -File script.ps1通过编码方式加载脚本: 将脚本内容编码为 Base64 字符串,然后在 PowerShell 中解码并执行

    1.2K10
    领券