You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android人脸应用:字节数组转Bitmap跨页传递与Base64转换实现

实现Android拍照后传递Bitmap并转换为Base64的完整流程

没问题,我来帮你一步步搞定这个需求,咱们从FaceTrackerActivity.java的修改开始,再到第二个Activity的逻辑实现:

1. 在FaceTrackerActivity中完成字节数组转Bitmap+传递逻辑

首先,假设你拍照后已经拿到了图片的字节数组(比如从相机回调里获取的byte[] data),先把它转换成Bitmap,然后给保存按钮添加点击事件,把Bitmap传递到下一个Activity:

// 1. 将图片字节数组转换为Bitmap
byte[] imageBytes = ...; // 你的拍照字节数组
Bitmap bitmap = BitmapFactory.decodeByteArray(imageBytes, 0, imageBytes.length);

// 2. 给保存按钮设置点击事件
Button saveBtn = findViewById(R.id.save_button);
saveBtn.setOnClickListener(v -> {
    // 创建Intent,指向你的第二个Activity(比如ImagePreviewActivity)
    Intent intent = new Intent(FaceTrackerActivity.this, ImagePreviewActivity.class);
    // Bitmap实现了Parcelable接口,可以直接用putParcelableExtra传递
    intent.putExtra("captured_bitmap", bitmap);
    startActivity(intent);
});

小提示:如果Bitmap过大,传递时可能会触发TransactionTooLargeException,你可以先对Bitmap进行压缩再传递,比如:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 80, baos);
byte[] compressedBytes = baos.toByteArray();
intent.putExtra("compressed_bitmap", compressedBytes);

到第二个Activity再把字节数组转回Bitmap即可。

2. 第二个Activity接收Bitmap并在ImageView展示

创建第二个Activity(比如命名为ImagePreviewActivity),在它的onCreate方法里接收Bitmap,然后显示到ImageView:

public class ImagePreviewActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_preview);

        ImageView imageView = findViewById(R.id.preview_image);
        
        // 接收Intent中的Bitmap
        Bitmap receivedBitmap = getIntent().getParcelableExtra("captured_bitmap");
        if (receivedBitmap != null) {
            // 在ImageView中展示图片
            imageView.setImageBitmap(receivedBitmap);
            
            // 调用方法将Bitmap转换为Base64
            String base64String = convertBitmapToBase64(receivedBitmap);
            // 这里可以使用base64String做后续操作,比如上传服务器等
            Log.d("Base64", "转换后的Base64字符串:" + base64String);
        }
    }
}

3. 实现Bitmap转Base64的工具方法

在ImagePreviewActivity中添加一个工具方法,完成Bitmap到Base64的转换:

private String convertBitmapToBase64(Bitmap bitmap) {
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    // 选择压缩格式,JPEG适合照片,PNG适合透明图
    bitmap.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    // 使用Base64编码
    return Base64.encodeToString(imageBytes, Base64.DEFAULT);
}

注意:如果需要URL安全的Base64编码,可以把Base64.DEFAULT换成Base64.URL_SAFE。

这样整个流程就通了:拍照后字节数组转Bitmap → 点击保存传递Bitmap到第二个Activity → 显示图片 → 转换为Base64。

内容的提问来源于stack exchange,提问作者salim ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:36:29