2015-02-19 2 views
1

Я успешно использовал Parse для загрузки и загрузки звуковых клипов на/с устройства. Я пробую аналогичную вещь, но с изображениями. У меня есть изображение, которое содержит изображение, выбранное пользователем. Я хочу отправить это изображение в качестве parseFile вложен внутри ParseObject (так называемый "profileParseObject")ParseFile Android C# Xamarin загрузка/загрузка изображений

Я видел этот пост: Putting image from gallery in ParseFile android

Однако использование:

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),R.drawable.usman); 

причины 'Имя' Bitmap 'не существует в текущем контексте' (я не знаю, какую ссылку на сборку мне нужно).

Итак, проблема заключается в следующем: я не могу преобразовать данные в imageView в байт [], чтобы отправить его для разбора .... Кроме того, если бы я был успешным, как бы я мог его восстановить от синтаксического анализа, а затем вернуть эти данные в imageView?

вот моя попытка загрузить и заблаговременно за помощь!

byte [] ImageData; 
        ImageData = _imageView.ToArray<byte>(); 
        ParseFile file = new ParseFile("profilePic.png", ImageData); 

        profileParseObject["profilePicture"] = file; 

        if (canUpdate) 
        { 
         await profileParseObject.SaveAsync(); 
         Console.WriteLine("Sucessfully updated your information"); 
        } 
        else 
        { 
         Console.WriteLine("Cannot update"); 
        } 

EDIT: я изменил код для использования вArray(); это скомпилировано, но я получаю следующую ошибку от устройства:

System.InvalidCastException: Невозможно отбросить с 'android/widget/ImageView' до '[B'. на Android.Runtime.JNIEnv.AssertCompatibleArrayTypes (IntPtr sourceArray, System.Type destType) [0x0001a] в /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbdd/source/monodroid/src/Mono .Android/src/Runtime/JNIEnv.cs: 744 на Android.Runtime.JNIEnv.GetArray [Byte] (IntPtr array_ptr) [0x00026] в /Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series /ba9bbbdd/source/monodroid/src/Mono.Android/src/Runtime/JNIEnv.cs:1207 в Java.Lang.Object.ToArray [Byte]() [0x00000] in/Users/builder/data/lanes/monodroid -mlion-monodroid-4,20-серия/ba9bbbdd/источник/monodroid/SRC/Mono.Android/SRC/java.lang/Object.cs: 338 на PlugIt.Profile + d__7.MoveNext() [0x005ff]

Есть идеи!?

+0

ImageData = _imageView.ToArray (byte); может сделать трюк! – ErAcube

+0

Вышла ошибка, 'недопустимый термин выражения' byte '' –

+0

ToArray - это метод, поэтому вам нужно добавить открытые и закрытые скобки. 'ImageData = _imageVIew.ToArray (); – arnfada

ответ

0

ToArray - это метод, поэтому вам нужно добавить открытые и закрытые скобки.

ImageData = _imageVIew.ToArray<byte>();

Edit:

Проблема заключается в том, что your'e пытается преобразовать управление ImageView в массив байтов. Вам нужно сначала извлечь изображение из imageView, а затем преобразовать это изображение в массив байтов.

//1. Get the Bitmap 
BitmapDrawable drawable = imageView.GetDrawable(); 
Bitmap bitmap = drawable.GetBitmap(); 

//2. Compress the bitmap into a stream and use that to get the byte array 
byte[] imageData; 
using(MemoryStream stream = new MemoryStream()) 
{ 
    bitmap.Compress(Bitmap.CompressFormat.Png, 0, stream); 
    imageData = stream.ToArray(); 
} 
+0

Привет, хотя это скомпилировано, когда я запустил его на устройстве, я получил ошибку. Спасибо, я редактировал свой оригинальный вопрос с новой ошибкой. –

+0

@CALBAGSHAW, см. Обновленный ответ – arnfada

+0

Спасибо, я проверю это на устройстве и вернусь к вам. Благодарю вас за ваш интерес и помогите в любом случае! Я ценю это. –

Смежные вопросы