Получить изображение из галереи Android в C # - PullRequest
0 голосов
/ 31 января 2019

Я создаю приложение для Android в Unity (я пишу код на C #), я почти закончил, просто нужно добавить несколько последних настроек, чтобы это имело смысл.В настоящее время у меня возникают проблемы с получением изображения профиля для профиля пользователя.Мне бы хотелось, чтобы, когда пользователь нажимает кнопку, открывается его галерея Android, а когда он выбирает картинку, она отображается в приложении и отправляется в базу данных.Так что-то вроде этого

public Button ChangeImage;
public Image ProfilePicture;

void Start()
{
    ChangeImage.onClick.AddListener(ChangeImageClicked);
}

void ChangeImageClicked()
{
    //here gallery would open and selected image would be returned
    //ProiflePicture = ChoosenImage
}

Я уже около недели гуглял решение, но не смог его найти.Я читал об Intents, но C # не распознает их.Вся помощь будет значительно сокращена.

1 Ответ

0 голосов
/ 31 января 2019

Существуют различные плагины, которые прекрасно справляются с этим.Одним из них является NativeGalery .Я сам использовал это для проекта.

Фрагмент из моего кода:

public Image LocalProfileImage;

public void ShowMediaPicker()
{
    if (Application.isEditor)
    {
        // Do something else, since the plugin does not work inside the editor
    }
    else
    {
        NativeGallery.GetImageFromGallery((path) =>
        {
            UploadNewProfileImage(path);
            Texture2D texture = NativeGallery.LoadImageAtPath(path);
            if (texture == null)
            {
                Debug.Log("Couldn't load texture from " + path);
                return;
            }

            LocalProfileImage.sprite = Sprite.Create(texture, new Rect(0, 0, texture.width, texture.height), Vector2.zero);
        });
    }
}

Моя функция UploadNewProfileImage(path); отправляет изображение в базу данных.По сути, вы должны извлечь изображение из пути и затем преобразовать его в байты, используя потоковый ридер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...