2016-11-10 2 views
-2

Я пытался получить предварительный просмотр задней камеры зеркально ... Я имею в виду, что предварительный просмотр должен отражать изображения по вертикали; он должен поменяться справа налево, как передняя камера ... Мне не нужен нормальный просмотр, мне нужно, чтобы изображение было таким, как если бы оно было видно с передней камеры, и я пытаюсь использовать SurfaceTexture. Есть ли кто-нибудь, кто об этом знает? Любые виды помощи приветствуются!Как зеркалировать предварительный просмотр камеры?

+1

Вы просто пытаетесь перевернуть изображение так, чтобы оно выглядело так, как на главной камере? – drew

+0

Да, я хочу перевернуть предварительный просмотр справа налево или влево-вправо, это то же самое для меня ... знаете ли вы какой-либо метод? –

+0

Вы используете камеру2api? Или старше? – drew

ответ

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. Просто преобразуйте массив пикселей в растровое изображение. Если вы используете обе камеры в своем приложении, вы можете проверить, используете ли вы фронт, как в приведенном выше примере.

+0

Кроме того, если это решит вашу проблему, отметьте ее как таковую. Это поможет другим столкнуться с одной и той же проблемой. – drew

+0

Спасибо, я отметил как ответ на данный момент –

+0

вы знаете, как преобразовать предварительный просмотр, который в моем случае является поверхностным отображением в растровое изображение? –

 Смежные вопросы

  • Нет связанных вопросов^_^