为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不将图像保存到本地的情况下将捕获的图像(表面视图)传递到另一个片段?

如何在不将图像保存到本地的情况下将捕获的图像(表面视图)传递到另一个片段?

跃然一笑 2021-04-28 09:58:44
我现在有一个来自googlesamples的Camera应用,该应用会捕获图像,然后将其保存到本地存储中。我想要的是将图像转换为位图并将其传递到另一个视图(片段)public class Camera2BasicFragment extends Fragment    implements View.OnClickListener, ActivityCompat.OnRequestPermissionsResultCallback {/** * Conversion from screen rotation to JPEG orientation. */private static final SparseIntArray ORIENTATIONS = new SparseIntArray();private static final int REQUEST_CAMERA_PERMISSION = 1;private static final String FRAGMENT_DIALOG = "dialog";static {    ORIENTATIONS.append(Surface.ROTATION_0, 90);    ORIENTATIONS.append(Surface.ROTATION_90, 0);    ORIENTATIONS.append(Surface.ROTATION_180, 270);    ORIENTATIONS.append(Surface.ROTATION_270, 180);}private static final String TAG = "Camera2BasicFragment";private static final int STATE_PREVIEW = 0;private static final int STATE_WAITING_LOCK = 1;private static final int STATE_WAITING_PRECAPTURE = 2;private static final int STATE_WAITING_NON_PRECAPTURE = 3;private static final int STATE_PICTURE_TAKEN = 4;private static final int MAX_PREVIEW_WIDTH = 1920;private static final int MAX_PREVIEW_HEIGHT = 1080;private final TextureView.SurfaceTextureListener mSurfaceTextureListener        = new TextureView.SurfaceTextureListener() {    @Override    public void onSurfaceTextureAvailable(SurfaceTexture texture, int width, int height) {        openCamera(width, height);    }    @Override    public void onSurfaceTextureSizeChanged(SurfaceTexture texture, int width, int height) {        configureTransform(width, height);    }    @Override    public boolean onSurfaceTextureDestroyed(SurfaceTexture texture) {        return true;    }    @Override    public void onSurfaceTextureUpdated(SurfaceTexture texture) {    }};private String mCameraId;private AutoFitTextureView mTextureView;private CameraCaptureSession mCaptureSession;private CameraDevice mCameraDevice;private Size mPreviewSize;我有一个ViewFragment,我想在其中检索捕获的图像,但是我将如何实现呢?有什么建议吗
查看完整描述

2 回答

?
www说

TA贡献1775条经验 获得超8个赞

您应该暂时保存它,如果尝试使用捆绑包进行转移,则可能会出现事务太大的错误。


查看完整回答
反对 回复 2021-04-28
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

例如,您可以使用Bitmap,因为它是Implements Parcelable,所以可以通过bundle传递它。

但!这不是解决方案,因为捆绑包的最大大小介于512-1024kb之间

因此,我认为最好保存照片,因为它可能会占用大量RAM作为对象,并且在其中收到链接后Fragment,只需删除即可。


查看完整回答
反对 回复 2021-04-28
  • 2 回答
  • 0 关注
  • 129 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信