Silverlight:使用WriteableBitmap从外部URL映像捕获像素会引发安全异常



我有几个UIElement,包括一个Image(带有外部URL图像),然后我想捕捉这些元素的缩略图,所以我使用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数组。这个限制扩展到使用URL派生属性的任何UI元素用于设置其部分或全部内容。特别是限制适用于"从MediaElement"场景。如果MediaElement.Source引用视频来自另一个域的文件,通过引用创建的WriteableBitmap作为元素源的MediaElement限制对像素的访问大堆

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

我的建议是仔细检查您正在尝试做什么-如果您正在编写Silverlight应用程序,那么在下载完整图像之前,您可能希望减少流向客户端的数据量。最好是在服务器端(动态或缓存)生成这些缩略图,并将它们交付得更小,以及在哪里可以使用完整的缩略图。NET框架生成缩略图?

最新更新