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

我现在有一个来自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,我想在其中检索捕获的图像,但是我将如何实现呢?有什么建议吗


跃然一笑
浏览 190回答 2
2回答

www说

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

守着星空守着你

例如,您可以使用Bitmap,因为它是Implements Parcelable,所以可以通过bundle传递它。但!这不是解决方案,因为捆绑包的最大大小介于512-1024kb之间因此,我认为最好保存照片,因为它可能会占用大量RAM作为对象,并且在其中收到链接后Fragment,只需删除即可。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java