ParseFile Android C#Xamarin上传/下载图片

时间:2015-02-19 11:49:27

标签: c# android parse-platform xamarin imageview

我已成功使用Parse从设备上传和下载声音片段。 我正在尝试类似的事情,但是有了图像。 我有一个imageView,其中包含用户选择的图像。 我希望将此图像作为parseFile嵌套在parseObject中(称为" profileParseObject")

我看过这篇文章:Putting image from gallery in ParseFile android

然而,使用:

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

导致'名称'位图'在当前背景下不存在' (我不知道我需要什么样的装配参考。)

所以问题是:我无法将imageView中的数据转换为byte []以将其发送到解析.... 另外,如果我成功了,我将如何从解析中检索它然后将这些数据放回到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");
                    }

编辑:我更改了代码以使用toArray();这已编译但我从设备收到以下错误:

System.InvalidCastException:无法从&#39; android / widget / ImageView&#39;到&#39; [B&#39;。   在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono中的Android.Runtime.JNIEnv.AssertCompatibleArrayTypes(IntPtr sourceArray,System.Type destType)[0x0001a]。安卓/ src目录/运行/ 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 /运行/ JNIEnv.cs:1207   在/Users/builder/data/lanes/monodroid-mlion-monodroid-4.20-series/ba9bbbdd/source/monodroid/src/Mono.Android/src/中的Java.Lang.Object.ToArray [Byte]()[0x00000] java.lang中/ Object.cs:338   在PlugIt.Profile + d__7.MoveNext()[0x005ff]

任何想法!?

1 个答案:

答案 0 :(得分:0)

ToArray是一种方法,因此您需要添加开括号和闭括号。

ImageData = _imageVIew.ToArray<byte>();

编辑:

问题是你试图将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();
}