Отобразить изображение из пути к файлу в xamarin

Я пытаюсь отобразить изображение с пути. Я могу отобразить изображение, если переместить изображение в рисованное, но я хочу отобразить изображение из пути к изображению. Я пытался использовать imageBitMap с GetImageBitmapFromUrl("путь к изображению"), но он отображал только пустой экран. Вторым способом, который я попробовал, является Android.Net.Uri url = Android.Net.Uri.Parse( "путь к изображению")

namespace SetPictureUrl
[Activity(Label = "SetPictureUrl", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
    protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);
        SetContentView(Resource.Layout.Main);`{


        ImageView  imagen = FindViewById<ImageView>(Resource.Id.demoImageView);
        //------------------ i tried but did not work. the screen is blank
        //  var imageBitmap = GetImageBitmapFromUrl("my image path");
        //  imagen.SetImageBitmap(imageBitmap);


        //---------------- i tried but did not work. the screen is blank
        Android.Net.Uri url = Android.Net.Uri.Parse("./HTC Desire 620/Internal storage/storage/emulated/0/test/fox.jpeg");
        imagen.SetImageURI(url);


        //----- this work but is not the way i wish to do it. my main program work with file paths 
        // imagen.SetImageResource(Resource.Drawable.fox);

    }

я попытался назвать путь в пути, но, похоже, не имеет значения пример:

(./HTC Desire 620 / Внутренняя память / хранилище / Эмулированная /0/test/fox.jpeg)

, (HTC Desire 620 / Внутренняя память / хранилище / Эмулированная /0/test/fox.jpeg)

и (¬/HTC Desire 620/ Внутренняя память / хранилище / Эмуляция /0/test/fox.jpeg)

но не радость Я хотел бы любую помощь. Не уверен, почему это дает мне столько проблем /

1 ответ

Решение

Не могли бы вы попробовать это?

                Android.Net.Uri uri = Android.Net.Uri.FromFile(new Java.IO.File(filePath));

                System.IO.Stream input = this.ContentResolver.OpenInputStream(uri);

                //Use bitarray to use less memory                    
                byte[] buffer = new byte[16 * 1024];
                using (MemoryStream ms = new MemoryStream())
                {
                    int read;
                    while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
                    {
                        ms.Write(buffer, 0, read);
                    }
                    pictByteArray = ms.ToArray();
                }

                input.Close();

                //Get file information
                BitmapFactory.Options options = new BitmapFactory.Options { InJustDecodeBounds = true };
                Bitmap bitmap = BitmapFactory.DecodeByteArray(pictByteArray, 0, pictByteArray.Length, options);

                imagen.SetImageBitmap(bitmap);
Другие вопросы по тегам