Преобразование байтового массива в растровое изображение дает черное изображение - PullRequest
0 голосов
/ 09 июня 2019

Эй, я хочу отобразить изображение, которое я сделал раньше автоматически. Я получил данные изображения в onPictureTaken, и массив байтов заполнен, я полагаю, информацией о пикселях, но когда я пытаюсь отобразить их в компоненте imageView, я всегда получаю черное изображение. (Конечно, я преобразовал его в растровое изображение перед отображением на экране)

Вот мой код:

private String errorMessage;
private Camera mCamera;
private Parameters parameters;
private ImageView iv;
private int picturesTaken;

@Override
protected void onCreate(Bundle savedInstanceState)
    {
    // Default initialisierung
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    errorMessage = null;
    iv = (ImageView) findViewById(R.id.iv);
    picturesTaken = 0;

    // Callback, wenn Bild aufgenommen wurde.
    Camera.PictureCallback pic = new Camera.PictureCallback()
        {
        @Override
        public void onPictureTaken(byte[] bytes, Camera camera)
            {
            // Bild probehalber ausgeben
            Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
            iv.setImageBitmap(bitmap);

            // Kamera wieder freigeben
            camera.release();
            mCamera = null;
            }
        };

    // Check, ob Hardware ansprechbar ist
    if (this.checkCameraHardware(this))
        {
        // Kameraobjekt erstellen
        mCamera = this.getCameraInstance();
        if (mCamera != null)
            {
            SurfaceTexture view = new SurfaceTexture(10);
            try
                {
                mCamera.setPreviewTexture(view);
                parameters = mCamera.getParameters();
                mCamera.setParameters(parameters);
                mCamera.startPreview();
                mCamera.takePicture(null, null, pic);
                picturesTaken++;
                }
            catch (Exception e)
                {
                errorMessage = e.getMessage();
                }
            }
        else
            {
            Toast.makeText(getApplicationContext(), "Error: Can't create instance of camera!", Toast.LENGTH_LONG).show();
            Log.e("kkkk", "Error: Can't create instance of camera!");
            }
        }
    else
        {
        Toast.makeText(getApplicationContext(), "Error: Camera currently not available!", Toast.LENGTH_LONG).show();
        Log.e("kkkk", "Error: Camera currently not available!");
        }
    }
...