在 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;
}
我想在 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;
}