在 Firebase 存储中保存 android.graphics.Bitmap

Save android.graphics.Bitmap in Firebase Storage

我想在 Firebase 存储中保存 android.graphics.Bitmap!

我的 android.graphics.Bitmap 是我将用户选择的图像分配给我使用 XML

创建的空标记模板时得到的自定义标记

这是我的标记创建函数:

public Bitmap createCustomMarker(Context context) {

        View marker = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);

        CircleImageView markerImage = (CircleImageView) marker.findViewById(R.id.user_dp);

        markerImage.setImageBitmap(photoDuMarkeur);   //"photoDuMarkeur" is the image selected by User

        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        marker.setLayoutParams(new ViewGroup.LayoutParams(52, ViewGroup.LayoutParams.WRAP_CONTENT));
        marker.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.buildDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        marker.draw(canvas);


        return bitmap;

    }

这是我的空标记模板:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/custom_marker_view"
    android:layout_width="82dp"
    android:layout_height="wrap_content">

    <de.hdodenhof.circleimageview.CircleImageView
        android:id="@+id/user_dp"
        android:layout_width="45dp"
        android:layout_height="58dp"
        android:layout_alignParentTop="true"
        android:layout_gravity="center_horizontal"
        android:layout_marginLeft="12dp"
        android:layout_marginTop="6dp"
        android:contentDescription="@null"
        android:src="@drawable/ccc"
        app:civ_border_color="#fff" />

    <RelativeLayout
        android:layout_width="71dp"
        android:layout_height="76dp"
        android:background="@drawable/markerfin"
        android:backgroundTint="@color/whiteMarker">

    </RelativeLayout>

</RelativeLayout>

当我测试时:

Log.d ( "test", "************************************ "+ createCustomMarker (Marker.this));

我收到此输出:

D/test: ************************************ android.graphics.Bitmap@78364bb

注意:函数或XML都没有问题,我在地图甚至ImageView中显示了标记,但我想保存这个标记"android.graphics.Bitmap@78364bb" 在 Firebase 中!

插入此参数字符串

在此参数中设置url图像

public Bitmap createCustomMarker(Context context, final String resource) {

        View marker = ((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.custom_marker_layout, null);

        final CircleImageView markerImage = (CircleImageView) marker.findViewById(R.id.user_dp);

        Picasso.with(MapsActivity.this).load(resource).networkPolicy(NetworkPolicy.OFFLINE)
                .into(markerImage, new Callback() {
                    @Override
                    public void onSuccess() {

                    }

                    @Override
                    public void onError() {
                        Picasso.with(getApplication()).load(resource).into(markerImage);

                    }
                });



        DisplayMetrics displayMetrics = new DisplayMetrics();
        ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        marker.setLayoutParams(new ViewGroup.LayoutParams(52, ViewGroup.LayoutParams.WRAP_CONTENT));
        marker.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
        marker.buildDrawingCache();
        Bitmap bitmap = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(bitmap);
        marker.draw(canvas);

        return bitmap;
    }