title: How to save a YUV_420_888 image?
body: <p>I built my own camera app with the camera2 API. I started with the sample "<a href="https://github.com/googlesamples/android-Camera2Raw" rel="noreferrer">camera2Raw</a>" and I added YUV_420_888 support instead of JPEG. But now I am wondering how I save the images in the ImageSaver!?</p>
  
  <p>Here is my code of the run method:</p>
  
  <pre><code>@Override
      public void run() {
          boolean success = false;
          int format = mImage.getFormat();
          switch(format) {
              case ImageFormat.RAW_SENSOR:{
                  DngCreator dngCreator = new DngCreator(mCharacteristics, mCaptureResult);
                  FileOutputStream output = null;
                  try {
                      output = new FileOutputStream(mFile);
                      dngCreator.writeImage(output, mImage);
                      success = true;
                  } catch (IOException e) {
                      e.printStackTrace();
                  } finally {
                      mImage.close();
                      closeOutput(output);
                  }
                  break;
              }
              case ImageFormat.YUV_420_888:{
                  ByteBuffer buffer = mImage.getPlanes()[0].getBuffer();
                  byte[] bytes = new byte[buffer.remaining()];
                  buffer.get(bytes);
                  FileOutputStream output = null;
                  try {
                      output = new FileOutputStream(mFile);
                      output.write(bytes);
                      success = true;
                  } catch (IOException e) {
                      e.printStackTrace();
                  } finally {
                      mImage.close();
                      closeOutput(output);
                  }
                  break;
              }
              default:
                  Log.e(TAG, "Cannot save image, unexpected image format:" + format);
  
          }
          // Decrement reference count to allow ImageReader to be closed to free up resources.
          mReader.close();
  
          // If saving the file succeeded, update MediaStore.
          if (success) {
              MediaScannerConnection.scanFile(mContext, new String[] { mFile.getPath()},
              /*mimeTypes*/ null, new MediaScannerConnection.MediaScannerConnectionClient() {
                  @Override
                  public void onMediaScannerConnected() {
                      // Do nothing
                  }
  
                  @Override
                  public void onScanCompleted(String path, Uri uri) {
                      Log.i(TAG, "Scanned " + path + ":");
                      Log.i(TAG, "-&gt; uri=" + uri);
                  }
              });
          }
      }
  </code></pre>
  
  <p>I tried to save the YUV images like a JPEG, but that way I only get one plane and the saved data don't make any sense to me...</p>
  
  <p>What is the correct way to save a YUV image? Convert it to RGB (what is the sense of YUV then?)? Or with YuvImage class?</p>