将相机拍摄的图像转换为字节数组,然后传递到下一个活动



我试图用相机拍照,然后将其转换为字节数组并传递到下一个活动。但我不知道该怎么做。这是拍摄图片的活动的代码:

import java.io.ByteArrayOutputStream;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.provider.MediaStore;
import android.widget.ImageView;
public class TakePictureActivity extends Activity {
    public final static int CAMERA_REQUEST = 1888;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TakePicture();
    }
    public void TakePicture() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(takePictureIntent, CAMERA_REQUEST);
    }
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // I don't know what to do here
    }
}

我已经设置了下一个活动,所以它可以接收字节数组并解码它,所以我需要的帮助就是这个。

试试这个

byte[] inputData=null;
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
    Uri uri = intent.getData();
    InputStream iStream =   getContentResolver().openInputStream(uri);
    inputData = getBytes(iStream);
} 

getBytes方法
public byte[] getBytes(InputStream inputStream) throws IOException {
      ByteArrayOutputStream byteBuffer = new ByteArrayOutputStream();
      int bufferSize = 1024;
      byte[] buffer = new byte[bufferSize];
      int len = 0;
      while ((len = inputStream.read(buffer)) != -1) {
        byteBuffer.write(buffer, 0, len);
      }
      return byteBuffer.toByteArray();
    }

正如Squonk指出的那样,我应该只是将相机意图和OnActivityResult移动到下一个活动中,而不是自己的活动。

相关内容

最新更新