2016-11-10 9 views
-2

リアカメラのプレビューをミラーリングしようとしていました...プレビューは画像を垂直に鏡像化する必要があります。フロントカメラのように右から左にスワップする必要があります。 通常のプレビューは必要ありませんフロントカメラから見えてSurfaceTextureを試しているような画像が必要です。 それについて何か知っている人がいますか? どんなタイプのヘルプも感謝しています!リアカメラのプレビューをミラーリングする方法は?

+1

メインのカメラのように写真を反転しようとしていますか? – drew

+0

はいプレビューを右から左に、または左から右に反転したいのですが、それは私にとっては同じです...あなたはどんな方法を知っていますか? –

+0

あなたはcamera2apiを使用していますか?それとも古いもの? – 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; 
     } 
    } 
}; 

ピクチャコールバックにビットマップを作成できます。ピクセル配列をビットマップに変換するだけです。アプリケーションで両方のカメラを使用する場合は、上記の例のように前面のカメラを使用したかどうかを確認できます。

+0

また、これで問題が解決した場合は、それに印を付けてください。これは他の人が同じ問題に遭遇するのを助けるでしょう。 – drew

+0

ありがとう、私は今の答えとしてマークしました –

+0

私のケースではサーフェイステクスチャがビットマップになっているプレビューを変換する方法を知っていますか? –

関連する問題