如何将Image转换为ImageSource Xamarin.Form

时间:2016-08-10 08:19:28

标签: xamarin xamarin.forms xamarin-studio

嘿我在ZXingBarcodeImageView中生成了图像我希望将其转换为ImageSource,这样我就可以在xaml中绑定Image,如何实现这一点,美好的一天,谢谢你

 public class GenerateCode: IGenerateCode
 {
    ZXingBarcodeImageView barcode;

    public ImageSource GenerateQr(string code)
    {
        barcode = new ZXingBarcodeImageView
        {
            HorizontalOptions = LayoutOptions.FillAndExpand,
            VerticalOptions = LayoutOptions.FillAndExpand,
        };
        barcode.BarcodeFormat = ZXing.BarcodeFormat.QR_CODE;
        barcode.BarcodeOptions.Width = 100;
        barcode.BarcodeOptions.Height = 100;
        barcode.BarcodeOptions.Margin = 10;
        barcode.BarcodeValue = code;
        return barcode; error as barcode is an image
    }
 }



<Image Source={Binding imgSource} />     

2 个答案:

答案 0 :(得分:0)

我假设您正在使用特定于平台的组件来生成图像。该组件将生成的图像存储到文件系统中,或者在内存中返回二进制表示。

要将文件转换为ImageSource,您可以使用ImageSource.FromFile()。要转换流,请使用ImageSource.FromStream()

您可以找到API here和一些精彩文档there

在上面的例子中,BindingContext(无论该页面或ViewModel无关紧要)都必须公开类型为ImageSource的公共属性,并使用其中任何一个返回转换后的图像以上方法。

答案 1 :(得分:0)

ZXingBarcodeImageView不会公开ImageSource属性,因为它意味着使用而不是 Image。您可以将其放在XAML或C#中。

例如:

XAML:

<!-- this goes in your root node -->
<!-- xmlns:zxing="clr-namespace:ZXing.Net.Mobile.Forms;assembly=ZXing.Net.Mobile.Forms" -->

<zxing:ZXingBarcodeImageView BarcodeValue="{Binding Code}" BarcodeFormat="QR_CODE" BarcodeOptions="{Binding Options}" />

C#后端:

protected override void OnAppearing()
{
    BindingContext = new
    {
        Code = code;
        Options = new EncodingOptions()
        {
            Width = 100,
            Height = 100,
            Margin = 10,
        }
    };
}