【问题标题】:Convert UWP WriteableBitmap to XamarinForms Image将 UWP WriteableBitmap 转换为 XamarinForms 图像
【发布时间】:2018-04-03 14:32:39
【问题描述】:

有没有办法将 UWP WriteableBitmap 转换为 XamarinForms 图像?尝试简单的转换以“无法将类型 WriteableBitmap 隐式转换为 Xamarin Forms Image”而告终。

我必须先将其转换为 base64 字符串吗?或者你会怎么处理?

谢谢

【问题讨论】:

    标签: image xamarin.forms uwp


    【解决方案1】:

    您可以在Xamarin.Forms.ImageSource 中找到FromStream 方法。根据您的要求,您可以通过DependencyService 获取来自 uwp 项目的WriteableBitmap 流。并将其转换为 PCL 中的ImageSource

    例子:

    界面

    public interface IStreamToImage
    {
        Task GetStreamFormUWP(Action<Stream> StreamBlock);
    }
    

    实施

    public async Task GetStreamFormUWP(Action<Stream> StreamBlock)
    { 
        await Window.Current.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async() => {
    
           .......
    
           using (Stream stream = MyBitmap.PixelBuffer.AsStream()){
           await stream.WriteAsync(sourcePixels, 0, sourcePixels.Length);
           StreamBlock(stream);
        }
     });
    }
    

    用法

    await DependencyService.Get<IStreamToImage>().GetStreamFormUWP( (stream) =>
    {          
        image.Source = ImageSource.FromStream(() => stream);
    });
    

    【讨论】:

    • 谢谢 Nico,实际上我正在尝试一些非常相似的东西。 Stream str = bm.PixelBuffer.AsStream(); var ms = new MemoryStream(); str.CopyTo(ms); 然后:Xamarin.Forms.ImageSource.FromStream(ms); 但 Xamarin Forms 图像将始终为空。
    • @fix 我在上面的答案中遇到了类似的问题,并且 Nico 告诉我,当设置值时,PropertyChanged 没有调用。这可能是一个错误。
    猜你喜欢
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    相关资源
    最近更新 更多