Android PhotoEditor 在 Intent 中发送位图
Android PhotoEditor send Bitmap in Intent
早上好,我正在使用这个 Github 库:https://github.com/burhanrashid52/PhotoEditor 作为照片编辑器。我有一个 GalleryFragment,用户可以在其中从他的画廊中选择图像,我将图像正确传递给 EditImageActivity,用户可以在其中应用贴纸、滤镜和 ecc。然后单击按钮,用户可以将编辑后的图像传递给 InfoActivity,他可以在其中添加其他信息并发布图像。
问题在于,当用户编辑图片并将其传递给 InfoActivity 时,显示的是未经更改的原始图片,而且当他发布图片时,保存的图片是原始图片,而不是修改后的图片。
我正在尝试使用位图来执行此操作:
这是 EditImageActivity 的代码,我在其中尝试将编辑后的图像发送到 InfoActivity:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bmp =((BitmapDrawable)mPhotoEditorView.getSource().getDrawable()).getBitmap();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent intent = new Intent(EditImageActivity.this, InfoActivity.class);
intent.putExtra("imm", byteArray);
startActivity(intent);
这是 InfoActivity 的一段代码,我尝试从 EditImageActivity 中检索带有已编辑图像的意图,以在 ImageView 中显示它:
byte[] byteArray = getIntent().getByteArrayExtra("imm");
assert byteArray != null;
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
immagine.setImageBitmap(bmp);
所以当用户不编辑图像时它有效,而当他编辑图像时,它显示原始图像。
我认为问题出在这段代码(我在 EditImageActivity 中用来获取编辑图像的位图的代码),因为它传递的是原始图像而不是修改后的图像:
Bitmap bmp =((BitmapDrawable)mPhotoEditorView.getSource().getDrawable()).getBitmap();
有人可以帮我吗?
是的,问题似乎出在您从 PhotoEditorView 中获取编辑后的图像时。如果你看到文档,要检索这个图像,就要执行下一个方法:
PhotoEditor.saveAsFile(filePath, new PhotoEditor.OnSaveListener() {
@Override
public void onSuccess(@NonNull String imagePath) {
Log.e("PhotoEditor","Image Saved Successfully");
}
@Override
public void onFailure(@NonNull Exception exception) {
Log.e("PhotoEditor","Failed to save Image");
}
});
所以库需要一个文件来保存它,如果成功,然后 returns 路径文件,用路径文件你需要创建位图对象。
早上好,我正在使用这个 Github 库:https://github.com/burhanrashid52/PhotoEditor 作为照片编辑器。我有一个 GalleryFragment,用户可以在其中从他的画廊中选择图像,我将图像正确传递给 EditImageActivity,用户可以在其中应用贴纸、滤镜和 ecc。然后单击按钮,用户可以将编辑后的图像传递给 InfoActivity,他可以在其中添加其他信息并发布图像。
问题在于,当用户编辑图片并将其传递给 InfoActivity 时,显示的是未经更改的原始图片,而且当他发布图片时,保存的图片是原始图片,而不是修改后的图片。
我正在尝试使用位图来执行此操作:
这是 EditImageActivity 的代码,我在其中尝试将编辑后的图像发送到 InfoActivity:
ByteArrayOutputStream stream = new ByteArrayOutputStream();
Bitmap bmp =((BitmapDrawable)mPhotoEditorView.getSource().getDrawable()).getBitmap();
bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
Intent intent = new Intent(EditImageActivity.this, InfoActivity.class);
intent.putExtra("imm", byteArray);
startActivity(intent);
这是 InfoActivity 的一段代码,我尝试从 EditImageActivity 中检索带有已编辑图像的意图,以在 ImageView 中显示它:
byte[] byteArray = getIntent().getByteArrayExtra("imm");
assert byteArray != null;
Bitmap bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
immagine.setImageBitmap(bmp);
所以当用户不编辑图像时它有效,而当他编辑图像时,它显示原始图像。
我认为问题出在这段代码(我在 EditImageActivity 中用来获取编辑图像的位图的代码),因为它传递的是原始图像而不是修改后的图像:
Bitmap bmp =((BitmapDrawable)mPhotoEditorView.getSource().getDrawable()).getBitmap();
有人可以帮我吗?
是的,问题似乎出在您从 PhotoEditorView 中获取编辑后的图像时。如果你看到文档,要检索这个图像,就要执行下一个方法:
PhotoEditor.saveAsFile(filePath, new PhotoEditor.OnSaveListener() {
@Override
public void onSuccess(@NonNull String imagePath) {
Log.e("PhotoEditor","Image Saved Successfully");
}
@Override
public void onFailure(@NonNull Exception exception) {
Log.e("PhotoEditor","Failed to save Image");
}
});
所以库需要一个文件来保存它,如果成功,然后 returns 路径文件,用路径文件你需要创建位图对象。