【问题标题】:Android PhotoEditor send Bitmap in IntentAndroid PhotoEditor 在 Intent 中发送位图
【发布时间】:2020-08-14 08:00:16
【问题描述】:

早上好,我正在使用这个 Github 库:https://github.com/burhanrashid52/PhotoEditor 作为照片编辑器。我有一个 GalleryFragment,用户在其中从他的图库中选择图像,我将图像正确传递给 EditImageActivity,用户可以在其中应用贴纸、过滤器、ecc。然后点击一个按钮,用户可以将编辑后的图像传递给InfoActivity,在那里他可以添加其他信息并发布图像。

问题是,当用户编辑图像并将其传递给 InfoActivity 时,它会显示原始图像而没有更改,而且当他发布它时,保存的图像是原始图像,而不是修改后的图像。

我正在尝试使用 Bitmap 来做到这一点:

这是 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();

有人可以帮帮我吗?

【问题讨论】:

  • 最后一条语句在哪个活动中?
  • EditImageActivity
  • 不,我们无法为您提供帮助,因为目前尚不清楚您如何将图像传输到活动或从活动转移到活动,然后再转移到活动。或者你如何穿线位图并将其发回。
  • 您最好简明扼要地展示editactivity如何接收位图、对其进行编辑并将其发回。
  • 我使用我发布的第一段代码将其从 EditImageActivity 发送到 InfoActivity(在意图中使用 bitmaparray),而第二段代码是我在 InfoActivity 中用于检索来自意图的位图数组。相反,我发布的最后一个代码是我认为存在错误的代码(也在第一段代码中,在 EditImageActivity 中)

标签: android image android-intent bitmap


【解决方案1】:

是的,问题似乎出在您从 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");
                 }
             });

所以库需要一个文件来保存它,如果成功,则返回路径文件,带有创建Bitmap对象所需的路径文件。

【讨论】:

  • 好的,非常感谢,所以我必须尝试在onSuccess内部实现位图意图,对吧?
  • 是的,在 onSuccess 中你有稍后检索的图像路径
  • 不要忘记压缩位图 :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-12
  • 2012-11-03
  • 2016-01-18
  • 1970-01-01
  • 1970-01-01
  • 2017-02-15
  • 1970-01-01
相关资源
最近更新 更多