Xamarin图像源未在Android上显示

时间:2018-02-08 10:39:46

标签: c# xamarin xamarin.android

我有一个使用PCL的跨平台应用程序,您可以使用相机拍摄照片,图像保存到本地数据库(以后可以在其他地方同步)。该应用程序还会加载最后一个图像,并将其显示在屏幕上,并将源绑定到视图模型。

这在iOS上完美运行,但Android不会显示绑定图像。

我测试过我可以通过将Source设置为“icon.png”来显示android上的图像。

的Xaml

 protected void Application_Error(object sender, EventArgs e)
        {
            Exception exception = Server.GetLastError();
            //Log your exception here
            Response.Clear();
            string action= "Error";
            // clear error on server
            Server.ClearError();

            Response.Redirect(String.Format("~/Error/{0}?message={1}", action, exception.Message));

        }

视图模型

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>            
    <Image HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand" Aspect="AspectFit" BackgroundColor="Green" Source="{Binding CameraImage}"/>
    <Button Grid.Row="1" Text="Take Picture" Command="{Binding GetPhoto}"/>
</Grid>

结合

public void LoadLatestImage(object sender, EventArgs e)
{
    var imageDBO = DatabaseHelpers.LocalDatabase.Table<ImageDBO>().OrderByDescending(i => i.DateCreated).FirstOrDefaultAsync().Result;
    if (imageDBO != null)
    {
        CameraImage = ImageSource.FromStream(() => { return new MemoryStream(imageDBO.ImageData); });
    }
}

请注意:我试图在Xamarin论坛和堆栈溢出上找到解决方案,但这里的类似问题并不相同,他们的解决方案似乎没有帮助。似乎大多数这些问题都是由访问本地资源引起的,但这不应该适用于此,因为我的源代码是直接来自咬合数组

1 个答案:

答案 0 :(得分:1)

事实证明这是由于Android相机的图像产生的字节数组太大而无法绑定到视图(仅限android问题)。缩小图像尺寸/质量可以解决问题。