gpt4 book ai didi

android - 如何将相机捕获的图像传递到android中的下一个屏幕?

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:49 25 4
gpt4 key购买 nike

我在 android 中使用相机应用程序。我想将字节数据从 PictureCallback 方法传递到另一个 Activity ,并想在该 Activity 中显示它。

Camera.PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {


}
};

如果有人知道,请帮助我......

最佳答案

你可以用额外的东西来做到这一点:

Camera.PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
Intent i = new Intent(context, B.class);

Bundle bundle = new Bundle();
bundle.putByteArray("photo", data);
i.putExtra(bundle );
startActivity(i);
}
};

和 B Activity :

Bundle extras = getIntent().getExtras();
byte[] photo = extras.getByteArray("photo");

要在第二个 Activity 中显示图像,您必须将 byte[] 转换为位图并将其分配给 imageView:

Bitmap bitmap  = decodeByteArray (photo, 0, photo.length);
ImageView imgView = (ImageView)findViewById(R.id.preview);
imgView.setImageBitmap(bitmap);

我从未尝试过从 byte[] 解码为位图……但您可以找到更多信息 here .

编辑: @ss1271 的评论是正确的。根据this answer似乎有 500Kb 的限制。这意味着如果你的图像很大,你应该保存它并将引用传递给新的 Activity ,如下所示:

// A ACTIVITY

Camera.PictureCallback jpegCallback = new PictureCallback() {
public void onPictureTaken(byte[] data, Camera camera) {
String fileName = "tempIMG.png";
try {
FileOutputStream fileOutStream = openFileOutput(fileName, MODE_PRIVATE);
fileOutStream.write(data);
fileOutStream.close();
} catch (IOException ioe) {
ioe.printStackTrace();
}
Intent i = new Intent(context, B.class);

Bundle bundle = new Bundle();
bundle.putExtra("photoPath", fileName);
i.putExtra(bundle);
startActivity(i);
}
};

// B ACTIVITY

Bundle extras = getIntent().getExtras();
String photoPath = extras.getString("photoPath");
File filePath = getFileStreamPath(photoPath);
//And do whatever you want to do with the File

关于android - 如何将相机捕获的图像传递到android中的下一个屏幕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8035008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com