2017-02-28 18 views
0

我在Android Studio中创建图像过滤器应用程序。首先,用户从图库中选择一个图像,并将它在imageview中显示。然后用户点击编辑按钮,该图像显示在下一个活动的图像视图中,我们可以添加过滤器...它可以在低分辨率图像下正常工作,但是当我选择任何高分辨率图像时,它会显示在第一个图像视图中,但是当我点击编辑按钮或者应用程序崩溃或我选择的最后一个图像显示。我搜索了解决方案,但无法找到它。如果有人知道如何解决这个问题,请帮我将高分辨率图像从一项活动传递到其他

回答

0

可以通过意图传递的数据的大小是有限制的。限制是roughly 500Kb - 您的高分辨率照片将比这更大。

考虑将图像保存到设备上的文件位置,将URI传递给接收活动并在其中加载它。

0

首先粘贴崩溃日志。 然后,而不是传递图像本身只是传递图像路径。 或只需在一项活动中添加编辑工具和主视图,并使编辑工具不可见!不过你也可以使用片段。

与putExtra
0

使用发送URI路径:

Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent .setClass(ThisActivity.this, NewActivity.class); 
      intent .putExtra("KEY", Uri); 
      startActivity(intent); 

你只需要添加图片的路径。

0

最好将图像保存在存储器中并传递位置的Uri而不是传递图像。

存储保存图像: -

public static Uri saveImageOnExternalStorage(Bitmap capturedBitmap, String imageId) { 
    if (null != capturedBitmap) { 

     OutputStream fOutputStream; 

     String path = Environment.getExternalStorageDirectory().toString(); 
    File file = new File(path + "temp", mediaId + ".png"); 
     file.delete(); 
     if (!file.getParentFile().exists()) { 
      file.getParentFile().mkdirs(); 
     } 
     try { 
      if (file.createNewFile()) { 
       fOutputStream = new FileOutputStream(file); 

       capturedBitmap.compress(COMPRESS_FORMAT, 100, fOutputStream); 

       fOutputStream.flush(); 
       fOutputStream.close(); 

       return Uri.fromFile(file); // return saved image path on external storage 
      } 
     } catch (FileNotFoundException e) { 
      Log.e(TAG,e.getMessage()); 
      return null; 
     } catch (IOException e) { 
      e.printStackTrace(); 
      Log.e(TAG,e.getMessage()); 
     } 
    } 
    return null; 
} 

现在相同的URI,你可以在接下来的活动意图通过: -

Intent intent = new Intent(CurrentActivity.this, LaunchActivity.class); 
      intent .putExtra("image_key", Uri); 
      startActivity(intent); 
相关问题