【问题标题】:View an image with xamarin forms使用 xamarin 表单查看图像
【发布时间】:2020-06-30 15:58:22
【问题描述】:

我应该正在查看内存中的图像。

代码:

public partial class MainPage : ContentPage
{
    static readonly File file = new File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryPictures), "tmp.jpg");

    public MainPage()
    {
        InitializeComponent();
    }

    private void Button_Clicked(object sender, EventArgs e)
    {
        bool exists = file.Exists(); // exists = true
        ImageExample.Source = ImageSource.FromFile(file.Path);
    }
}

xaml:

<StackLayout>
    <Button HeightRequest="100" 
            WidthRequest="200"
            HorizontalOptions="Center" 
            VerticalOptions="Center" 
            Clicked="Button_Clicked"/>
    <Image x:Name="ImageExample" 
           HorizontalOptions="FillAndExpand" 
           VerticalOptions="FillAndExpand"
           WidthRequest="200" 
           HeightRequest="100"/>
</StackLayout>

为什么图片不显示?

提前致谢!

【问题讨论】:

  • 请出示您的 xaml。
  • VS 输出窗口有错误信息吗?关于“...未找到”等的东西?
  • 抱歉错误是 W/ImageView(9011): resolveUri failed on bad bitmap uri: /storage/emulated/0/Pictures/tmp.jpg
  • 尝试使用Image.UriSource=file.Path;
  • 试试ImageExample.Source = "file://" + file.Path;

标签: c# image file xamarin.forms path


【解决方案1】:

我想通了。您的应用似乎没有从文件存储中读取的权限。

你应该添加行

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

进入AndroidManifest.xml 文件(位于&lt;your-app-name&gt;.Android 文件夹的Properties 子文件夹中)。

另外,您应该添加到MainActivity.cs 文件:

 using Android;
 using Android.Support.V4.App;
 .... 
    const int OurRequest = 2;

    protected override void OnCreate(Bundle savedInstanceState)
    {
        ....
        var permission = new string[1];
        if (Android.Support.V4.Content.ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != Permission.Granted)
        {
            permission[0] = Manifest.Permission.ReadExternalStorage;
            ActivityCompat.RequestPermissions(this, permission, OurRequest);
        }

现在,如果您运行该应用程序,它会询问权限,并且(如果是肯定回答,显然)图像将被加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2022-12-09
    • 1970-01-01
    • 2012-08-12
    • 2011-10-18
    • 2018-07-11
    相关资源
    最近更新 更多