Silverlight:使用WriteableBitmap从外部URL图像捕获像素引发安全例外

时间:2012-11-16 07:49:59

标签: image silverlight writeablebitmap

我有几个UIElement,包括Image(带有外部网址图片),然后我想要抓住这些元素的缩略图,所以我使用WriteableBitmap来抓住每个UIElement的像素。

然而,当我尝试使用:

捕获Image的像素时
WriteableBitmap wb = new WriteableBitmap(image, new ScaleTransform()
                     {
                         ScaleX = 0.5,
                         ScaleY = 0.5,
                     });
...
wb.GetPixeli(x, y); // Throws exception

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.writeablebitmap(v=vs.95).aspx

  

WriteableBitmap类具有限制访问的安全模型   如果WriteableBitmap是使用构造的,则为Pixels数组   跨域内容。例如,一个WriteableBitmap   使用引用来自的URL的BitmapImage构造   另一个域不允许访问其Pixels数组。该   限制扩展到使用URL派生属性的任何UI元素   用于设置部分或全部内容。特别是这个   限制适用于“从中获取正在运行的视频的帧”   MediaElement“场景。如果MediaElement.Source引用了一个视频   来自另一个域的文件,通过引用创建的WriteableBitmap   MediaElement作为元素源限制对像素的访问   阵列。

因此,为了捕获这几个UIElement(包括Image元素)的缩略图,我是否必须将图像下载到临时目录然后渲染它?

1 个答案:

答案 0 :(得分:0)

我的建议是仔细检查你要做的事情 - 如果你正在编写Silverlight应用程序,在下载完整图像之前,你可能希望减少流向客户端的数据量(s )。生成服务器端的这些缩略图(动态或缓存)并将它们放得更小,并且可以使用完整的.NET框架来生成缩略图是不是更好?