gpt4 book ai didi

java - 在 Android 中使用 Parse.com 保存和检索图像文件

转载 作者:搜寻专家 更新时间:2023-10-30 20:37:39 24 4
gpt4 key购买 nike

这一整天我都被困住了。我已经尝试了所有其他可用的方法来实现这一点。下面的方法几乎完成了工作,但它为变量文件提供了一个空指针异常。

下面的代码描述了保存数据

            final ParseObject post = new ParseObject("Student");
post.put("name", nameS);

final ParseFile file = new ParseFile("photo.png", data);
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
post.put("studentPhoto", file);
Log.d("John", ""+ file);
}
});

post.put("author", ParseUser.getCurrentUser());

post.saveInBackground(new SaveCallback() {
public void done(ParseException e) {
if (e == null) {
// Saved successfully.
Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
Intent intent = new Intent(AddStudentActivityEditText.this, AddStudentActivityTextView.class);
startActivity(intent);

} else {
// The save failed.
Toast.makeText(getApplicationContext(), "Failed to Save", Toast.LENGTH_SHORT).show();
Log.d(getClass().getSimpleName(), "User update error: " + e);
}
}
});

下面的数据描述了检索数据

final ParseQuery<ParseObject> query = ParseQuery.getQuery("Student");
query.whereEqualTo("author", ParseUser.getCurrentUser());
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e == null) {

for (ParseObject text : objects) {

name.setText(text.getString("name"));
}

ParseQuery<ParseObject> query = ParseQuery.getQuery("Student");
query.whereEqualTo("author", ParseUser.getCurrentUser());
query.getFirstInBackground(new GetCallback<ParseObject>() {
public void done(ParseObject object, ParseException e) {
if (object != null) {

ParseFile file = (ParseFile)object.get("studentPhoto");
file.getDataInBackground(new GetDataCallback() {


public void done(byte[] data, ParseException e) {
if (e == null) {

Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
//use this bitmap as you want
photo.setImageBitmap(bitmap);

} else {
// something went wrong
}
}
});

} else {
Toast.makeText(getApplicationContext(), "Exception", Toast.LENGTH_SHORT) .show();

}
}
});

} else {
Toast.makeText(getApplicationContext(), "Exception", Toast.LENGTH_SHORT).show();

}
}
});

最佳答案

我不知道为什么您的方法不起作用,但我会向您展示我从解析中获取照片的方法。首先,确保你成功保存了你的图像——为此,在 parse.com 面板上转到你的应用程序,打开 Core 选项卡,检查你的 Student 表是否有名为 studentPhoto 的列,并且应该有指向该列的链接相片。我从解析中获取图像的方法是使用 Picasso 库。简单地说,从解析中您应该只获得照片的链接,而不是整个文件,然后使用 Picasso 下载该照片。要获取文件链接,请执行类似的操作:

ParseObject object = ... // your student object
try {
object.fetchIfNeeded();
} catch (ParseException e) {
e.printStackTrace();
}

ParseFile avatar = object.getParseFile("studentPhoto");
String avatarUrl = avatar.getUrl();

然后使用 Picasso 设置该图像:

   Picasso.with(getActivity()) // instead of getActivity() you could pass there any context
.load(avatarUrl)
.into(yourImageViewWithAvatar);

有毕加索网站了解更多信息:http://square.github.io/picasso/

关于java - 在 Android 中使用 Parse.com 保存和检索图像文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33330980/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com