【问题标题】:How to share a fetched image?如何分享获取的图像?
【发布时间】:2012-11-30 23:01:27
【问题描述】:

我使用“blob”的 responseType 进行 WinJS.xhr() 调用,result.response 是一个图像。我如何分享该图像? DataTransferManager 的 setBitmap 需要一个流引用。我是否需要将图像记录到临时文件中,然后执行Windows.Storage.Streams.RandomAccessStreamReference.createFromFile()?如果是这样,我如何将图像写入 StorageFile?谢谢。

【问题讨论】:

    标签: windows-8 windows-runtime winjs


    【解决方案1】:

    你有两个选择:

    1. 正在将文件写入磁盘。详情请见this question
    2. 从 XHR 响应创建一个多用途 blob。见MSDN for details

    如果您只是临时共享文件,则第二个选项可让您不必将文件写入磁盘,但它会通过一些内存管理来稍后撤消 blob。创建 URL 后,您可以将其分配给 img 标签 src 属性。

    【讨论】:

    • 谢谢,多米尼克。将 blob 写入磁盘的过程似乎很痛苦。我想这就是所需要的,对吧?
    • 如果您需要将其放入磁盘,可以。如果您只想在 UI 中的多个位置使用 blob 几分钟,或者运行应用程序,并且不想要缓存,那么 createObjectUrl 将为您提供一个可以分配给多个图像标签的 URL。跨度>
    • 我最终不需要把它放到磁盘上。我最终需要将它放到与 DTM 中的 e.request.data.setBitmap() 方法兼容的流中,以便我可以共享。在您在 #2 中发送给我的链接中,您是说我可以使用“ms-stream”响应类型来获取可以传递给 setBitmap() 方法的流吗?
    • 我想是这样 - 但我不是 dtm 专家。
    【解决方案2】:

    这个老问题的替代答案,如果目标是共享图像而不保存它,

    Windows.Storage.Streams.RandomAccessStreamReference.createFromUri(targetImageSrc);
    

    应该达到相同的结果,从uri 而不是file 创建流。

    虽然,这个功能当时可能还没有。

    【讨论】:

      猜你喜欢
      • 2020-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2021-11-14
      • 2020-12-12
      相关资源
      最近更新 更多