Firebaseから写真のURLを取得してビットマップに変換しようとしています。 GlideライブラリがURLを変換してイメージをImageViewに置くので、FirebaseへのアップロードとFirebaseストレージからのイメージの取得は問題ありません。しかし、OpenGLのビットマップテクスチャの場合、Glideは適切ではありません。それが取得したURLを示しlogcatでAndroidでFirebaseデータベースの画像文字列をビットマップに変換するには?
:写真のURLは、この(キー情報は、セキュリティを確保するように変更されているが、形式は同じである)のように出てきます。しかし、その形式で。 SharedPreferencesでURLを保存します。私はRajawali OpenGLフレームワークを使ってSharedPreferencesに保存された画像URLからビットマップを取得する3Dモデルを表示しています。この非同期クラスを使用してURLをビットマップに変換し、3Dモデルのテクスチャに適用します。
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.util.Log;
import org.rajawali3d.materials.textures.Texture;
import org.rajawali3d.materials.textures.TextureManager;
public class AsyncLoadImageTask extends AsyncTask<String, String, Bitmap> {
private final static String TAG = "AsyncTaskLoadImage";
private Texture texture;
public AsyncLoadImageTask(Texture texture) {
this.texture = texture;
}
@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap = null;
try {
URL url = new URL(params[0]);
bitmap = BitmapFactory.decodeStream((InputStream)url.getContent());
} catch (IOException e) {
Log.e(TAG, e.getMessage());
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
texture.setBitmap(bitmap);
TextureManager.getInstance().replaceTexture(texture);
}
}
私は、()メソッドonRender私のレンダラーでこれを呼び出す:
try {
//This is reference to the String containing the url
String url = UserPrefs.getCustomLabel(mContext);
new AsyncLoadImageTask(labelTex).execute(url);
} catch (Exception e) {
e.printStackTrace();
}
}
をラジャワリフレームワークは、変換後のビットマップを適用しようとすると、それは、URL文字列が空/ nullであることを述べています。ラジャワリがFirebaseストレージへの認証されていない要求を行っていることは非常に良いチャンスがあり
public static String getCustomLabel(Context context){
SharedPreferences settings;
String text;
settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); //1
text = settings.getString(LABEL_KEY, null); //2
Log.d(UP_TAG, "Retrieved Url: " + text);
return text;
}
だから、あなたの質問はFirebaseと本当に何の関係もありませんし、より多くのOpenGLビューにテクスチャをロードすると? –
あなたのコードに 'putString(LABEL_KEY、...)'がある場所を示してください。 –
@ cricket_007いいえ、私は今、テクスチャを読み込んでOpenGLの3Dモデルに適用することを知っています。私の質問はFirebaseに関するものです。変換されたURL /文字列をビットマップに変換するのは、上の例の.jpgの後に余分なテキストがあるため、有効なビットマップではないと思います。 –