android - 如何在 android 中使用解析 api 在解析服务器中上传图像

标签 android image parse-platform android-drawable

我想在 android 的解析云服务器中上传一张图片。但我做不到。

我已经尝试了以下代码:

Drawable drawable = getResources().getDrawable(R.drawable.profilepic) ;
Bitmap bitmap = (Bitmap)(Bitmap)drawable()
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] data = stream.toByteArray();                

ParseFile imageFile = new ParseFile("image.png", data);
imageFile.saveInBackground();

请告诉我该怎么做。

最佳答案

经过几个小时的努力,这里的代码段对我有用。

1. Activity 类的数据成员

Bitmap bmp;
Intent i;
Uri BmpFileName = null;

<强>2。启动相机。目标是启动相机 Activity 和 BmpFileName 以存储对文件的引用

String storageState = Environment.getExternalStorageState();
if (storageState.equals(Environment.MEDIA_MOUNTED)) {

String path = Environment.getExternalStorageDirectory().getName() + File.separatorChar + "Android/data/" + this.getPackageName() + "/files/" + "Doc1" + ".jpg";

File photoFile = new File(path);
try {
if (photoFile.exists() == false) { 
photoFile.getParentFile().mkdirs();
photoFile.createNewFile();
}
} 
catch (IOException e) 
{
Log.e("DocumentActivity", "Could not create file.", e);
}
Log.i("DocumentActivity", path);
BmpFileName = Uri.fromFile(photoFile);
i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
i.putExtra(MediaStore.EXTRA_OUTPUT, BmpFileName);
startActivityForResult(i, 0);

3.通过覆盖 onActivityResult 从相机输出中读取内容。目标是评估 bmp 变量。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
try {
bmp = MediaStore.Images.Media.getBitmap( this.getContentResolver(), BmpFileName);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {

// TODO Auto-generated catch block
e.printStackTrace();
}
// Myocode to display image on UI - You can ignore
if (bmp != null)
IV.setImageBitmap(bmp);
}
}

4.保存事件

// MUST ENSURE THAT YOU INITIALIZE PARSE
Parse.initialize(mContext, "Key1", "Key2");

ParseObject pObj = null;
ParseFile pFile = null ;
pObj = new ParseObject ("Document");
pObj.put("Notes", "Some Value");

// Ensure bmp has value
if (bmp == null || BmpFileName == null) {
Log.d ("Error" , "Problem with image"
return;
}

ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(CompressFormat.PNG, 100, stream);
pFile = new ParseFile("DocImage.jpg", stream.toByteArray());
try 
{
pFile.save();
pObj.put("FileName", pFile);
pObj.save();
_mParse.DisplayMessage("Image Saved");
} 
catch (ParseException e) 
{
// TODO Auto-generated catch block
_mParse.DisplayMessage("Error in saving image");
e.printStackTrace();
}

//在我的情况下完成 Activity 。你可以选择别的东西 完成();

所以这是与其他人的主要区别

  • 我调用了初始化解析。您可能会对此一笑置之,但人们已经花费了数小时调试代码,却没有意识到解析没有初始化
  • 使用 Save 而不是 SaveInBackground。我知道它可能会举行 Activity ,但这对我来说是理想的行为,更重要的是它有效

如果它不起作用,请告诉我

关于android - 如何在 android 中使用解析 api 在解析服务器中上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16292853/

相关文章:

android - 在 motionevent 中找不到 settooltype 方法

java - 如何使用retrofit 2在android中的数组中发布数据

android - 如何将 GPS 数据从 Android 发送到网站?

php - Web 应用程序的图像大小调整

ios - 从关系开始查询

android - 如何获取listview中按钮的Id?

java - 使用链接在 jlabel 上显示客户的图像。保存在数据库中

json - fbexternal-a.akamaihd.net/safe_image.php 返回 1x1 图像

javascript - 如何在 Windows 7 32 位中安装 Parse Cloud Code?

java - 获取错误 : conversion to Dalvik format failed: Unable to execute dex: