java - 如何将捕获的图像或从图库中选择的图像转换为base64?

标签 java android android-studio

用户可以从图库中捕获或选择图像。我想将该图像上传到服务器。

这是我的相机代码 -

camera.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent i = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    //String encode = ImageBase64.encode(i);
                    startActivityForResult(i, CAMERA_REQUEST);
                }
            });

这是我从图库中选择图像的代码 -

gallary.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent g = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
                startActivityForResult(g, GALLARY_REQUEST);
            }
        });

另外,我用下面的代码显示该图像 -

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(resultCode == RESULT_OK) {
            if(requestCode == CAMERA_REQUEST) {
                Bitmap bitmap = (Bitmap) data.getExtras().get("data");
                uploaded_img.setImageBitmap(bitmap);
            }
        }
        if(requestCode == GALLARY_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
            Uri uri = data.getData();
            uploaded_img.setImageURI(uri);
        }
    }

现在,我想将此图像转换为 Base64 并上传到服务器。

最佳答案

给你:

public static String convertToBase64(String path) {
        Bitmap bm = BitmapFactory.decodeFile(path);
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
        byte[] byteArrayImage = baos.toByteArray();
        String encodedImage = android.util.Base64.encodeToString(byteArrayImage, android.util.Base64.DEFAULT);
        return encodedImage;
    }


    public static Bitmap decodeFromBase64ToBitmap(String encodedImage) {

        byte[] decodedString = android.util.Base64.decode(encodedImage, android.util.Base64.DEFAULT);
        Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
        return decodedByte;
    }

我已在我的项目中将其设为静态,因此我不必创建类实例。

关于java - 如何将捕获的图像或从图库中选择的图像转换为base64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53146789/

相关文章:

android - 错误 :Cause: com. android.builder.BuilderConstants Android Studio

android-studio - Android Studio 项目 View 中的不可见文件夹

java - 如何使 m2e(eclipse 的 Maven 集成)知道在哪里可以找到依赖项?

android - 二进制 XML 文件行 #1 : Error inflating class fragment

android - 在 Kotlin 中声明多种类型的列表

Android SDK 文件夹占用大量磁盘空间。我们是否需要保留所有系统镜像?

android-studio - 无法在 Android Studio 中使用 Google Play 服务库

java - 主线程名称

java - 该方法必须覆盖或实现父类(super class)方法

java - 通过 CXF 连接到 https Url 时出现 SocketTimedOut