【问题标题】:How to mirror a rear camera preview? [closed]如何镜像后置摄像头预览? [关闭]
【发布时间】:2016-11-10 19:04:32
【问题描述】:

我试图镜像后置摄像头的预览...我的意思是预览应该垂直镜像图像;它应该像前置摄像头一样从右到左交换...... 我不需要正常预览,我需要图像,就像从前置摄像头看到的那样,我正在尝试 SurfaceTexture。 有人知道吗? 感谢任何类型的帮助!

【问题讨论】:

  • 你只是想翻转图片,让它看起来像在主相机上吗?
  • 是的,我想从右到左或从左到右翻转预览,这对我来说是一样的......你知道任何方法吗?
  • 你在使用camera2api吗?还是旧的?
  • 我使用的是旧款相机
  • 那你知道吗?

标签: java android algorithm camera android-camera


【解决方案1】:

这就是我所做的。我将像素数组转换为位图并翻转它。我注意到我还必须旋转我的图像。如果你需要这样做,你可以使用下面的 rotateBitmap 方法。我在翻转它之前旋转了它。由于我的应用程序使用了两个摄像头,我首先检查它是否使用前置摄像头。

public Bitmap flip(Bitmap d)
{
    Matrix m = new Matrix();
    m.preScale(-1, 1);
    Bitmap dst = Bitmap.createBitmap(d, 0, 0, d.getWidth(), d.getHeight(), m, false);
    dst.setDensity(DisplayMetrics.DENSITY_DEFAULT);
    return dst;
}

public Bitmap rotateBitmap(Bitmap source, float angle)
{
    //Rotates Bitmap
    Matrix matrix = new Matrix();
    matrix.postRotate(angle);
    return Bitmap.createBitmap(source, 0, 0, source.getWidth(), source.getHeight(), matrix, true);
}

所以它看起来像这样。

if(orienation == Orienation.SELFIE)
{            
    bMap = rotateBitmap(bMap, 270);
    bMap = flip(bMap);
}

这些只是我在应用程序中使用的一些自定义字段。我想你明白了,可以随心所欲地迎合它。

private Camera.PictureCallback mPicture = new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] data, Camera camera) {
        Bitmap bMap = BitmapFactory.decodeByteArray(data, 0, data.length);
        if (currentCameraId == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            frontFacing = true;
        }
    }
};

您可以在 PictureCallback 中创建位图。只需将像素数组转换为位图。如果您在应用程序中同时使用这两个摄像头,您可以检查是否像我在上面的示例中那样使用了前面的摄像头。

【讨论】:

  • 另外,如果这解决了您的问题,请将其标记为如此。这将帮助其他遇到相同问题的人。
  • 谢谢,我现在已经标记为答案了
  • 你知道如何将在我的例子中是表面纹理的预览转换为位图吗?
  • 刚刚编辑了我的答案@amritsingh
  • 但我需要翻转预览而不是拍摄的图像...如果您必须拍照,上面的代码可以工作...我想在与背面镜像的表面纹理中显示预览相机也@drew
猜你喜欢
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多