gpt4 book ai didi

android - Parse - 在同一个对象中保存多个图像

转载 作者:行者123 更新时间:2023-11-30 01:32:27 24 4
gpt4 key购买 nike

我在 Parse.com 中有一个名为 Objects 的类。该类包含许多字段,还包含 10 个 ParseFile 字段,它们是图像。我正在使用以下代码在类对象中添加新项目。

ParseObject object = new ParseObject("Objects");
object.put("field1", "test1");
object.put("field2", "test2");

int imagesSize = Details.getInstance().getImages().size();
for (int i = 0; i < imagesSize; i++) {

//convert bitmap to byte[]
Bitmap bmp = Details.getInstance().getImages().get(i);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] data = stream.toByteArray();

//convert byte[] to parse file
ParseFile file = new ParseFile("objectImage.png", data);
file.saveInBackground();
object.put("image" + numbers[i], file);
}
object.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
Log.i("Add", "done");
}else{
Log.i("Add", e.getMessage());
}
}
});

我的问题是我收到了这个错误

java.lang.IllegalStateException: Unable to encode an unsaved ParseFile

我知道我应该使用下面的命令来保存 ParseFile

//convert bitmap to byte[]
Bitmap bmp = Details.getInstance().getImages().get(i);
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] data = stream.toByteArray();

//convert byte[] to parse file
ParseFile file = new ParseFile("objectImage.png", data);
file.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e == null) {
object.put("image" + numbers[i], file);
}else{
Log.i("Add", e.getMessage());
}
}
});

但是现在有多个图像我不知道如何实现。如果我在 for 循环 中使用 saveCallBack,那么我不会得到正确的结果。

最佳答案

//在 Parse 表中创建照片数组列。

enter image description here

//您同时添加多张照片。//这里是数组列表,你必须要添加 ParseFile 对象

gameScore.addAllUnique("photos", Arrays.asList(parsefilephotoobject1, parsefilephotoobject2,parsefilephotoobject3));
gameScore.saveInBackground();

//你在照片数组中一张一张地添加单张照片。 我使用 glide 从图像中获取字节数组。 destination_profile 是我从图库中选择的文件对象。

  if (destination_profile != null) {
Glide.with(getActivity()).load(destination_profile.getAbsolutePath()).asBitmap().toBytes().centerCrop().diskCacheStrategy(DiskCacheStrategy.ALL).into(new SimpleTarget<byte[]>() {
@Override
public void onResourceReady(byte[] resource, GlideAnimation<? super byte[]> glideAnimation) {


final ParseFile parseFile = new ParseFile(destination_profile.getName(), resource);
parseFile.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
gameScore.addUnique("photos", parseFile);
gameScore.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
showToast("Profile image upload success");
}
});
}
});


}
});
}

你可以使用这个获取 ParseFile 数组对象

@ParseClassName("YourTableName")
public class YourTableName extends ParseObject {


public static ParseQuery<YourTableName> getQuery() {
return ParseQuery.getQuery(YourTableName.class);
}



public List<ParseFile> getParseFilePhotos() {
return getList("photos");
}


}

关于android - Parse - 在同一个对象中保存多个图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573317/

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