herunterladen Ich verwende Firebase-Speicher in meiner Android App, um Bilder von Benutzern hochgeladen zu speichern. Alle hochgeladenen Bilder sind quadratisch. Ich entdecken, dass diese Bilder eine Menge Benutzer der Download-Bandbreite verbraucht, und ich mag diesen Verbrauch reduzieren, indem die Größe des Bildes in einen Platz Imageview heruntergeladen reduziertWie Bilder mit bestimmter Größe aus Firebase-Speicher
I Glide bin mit diesem Bild zum Download und ich habe habe versucht, Bilder mit benutzerdefinierter Größe herunterzuladen, aber das Bild wird nicht in der Bildansicht angezeigt.
Schnittstelle
public interface MyDataModel {
public String buildUrl(int width, int height);
}
meine Klasse, die BaseGlideUrlLoader
public class MyUrlLoader extends BaseGlideUrlLoader<MyDataModel> {
public MyUrlLoader(Context context) {
super(context);
}
@Override
protected String getUrl(MyDataModel model, int width, int height) {
// Construct the url for the correct size here.
return model.buildUrl(width, height);
}
}
Klasse, die Schnittstelle
public class CustomImageSize implements MyDataModel {
private String uri;
public CustomImageSize(String uri){
this.uri = uri;
}
@Override
public String buildUrl(int width, int height) {
return uri + "?w=" + width + "&h=" + height;
}
}
implementiert MyDataModel erweitert Schließlich
CustomImageSize size = new CustomImageSize(uri);
Glide.with(context)
.using(new MyUrlLoader(context))
.load(size)
.centerCrop()
.priority(Priority.HIGH)
.into(imageView);
ERGEBNISSE DER LÖSUNG OBEN
Bild wird erscheinen nicht in meinem Platz Imageview
Lösung 2: Verwenden Sie Feuerbasis Bild loader
// Reference to an image file in Firebase Storage
StorageReference storageReference = ...;
ImageView imageView = ...;
// Load the image using Glide
Glide.with(this /* context */)
.using(new FirebaseImageLoader())
.load(storageReference)
.into(imageView);
ERGEBNIS DER LÖSUNG 2 ÜBER
funktioniert! Bild erscheint aber ABER Es ist wie das gesamte Bild heruntergeladen wurde, die eine Menge Bandbreite verbrauchen. Ich möchte nur ein benutzerdefiniertes Bild, z. B. 200px bis 200px, heruntergeladen werden.
Wie kann ich in meiner obigen Lösung 1 Bilder der benutzerdefinierten Größe aus dem Firebase-Speicher herunterladen oder ändern?
EDIT
Ich habe versucht, einen meiner Bilder aus dem Browser https://firebasestorage.googleapis.com/....m.png
zuzugreifen und es wurde erfolgreich auf die Webseite geladen.aber wenn ich versuche zu Größe spezifische Parameter zu meinem Bild-URL-Link zu setzen https://firebasestorage.googleapis.com/....m.png?w=100&h=100
ein Fehler erschien auf der Webseite
{
"error": {
"code": 403,
"message": "Permission denied. Could not perform this operation"
}
}
Ich weiß nicht, dass Sie eine bestimmte Größe für ein hochgeladenes Bild in Firebase Storage anfordern können, indem Sie die Anfrage "w" und "h" GET übergeben. Können Sie die Dokumentation oder den Artikel teilen, der diese Fähigkeit erwähnt? Ich kann es in der offiziellen Dokumentation nicht finden. – Wilik
@Wilik finden Sie irgendwelche Lösungen? – ono