我有一个表示BitMap图像的Base64字符串.
我需要再次将该String转换为BitMap图像,以便在我的Android应用程序中的ImageView上使用它
怎么做?
这是我用来将图像转换为base64字符串的代码:
//proceso de transformar la imagen BitMap en un String:
//android:src="c:\logo.png"
Resources r = this.getResources();
Bitmap bm = BitmapFactory.decodeResource(r, R.drawable.logo);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.PNG, 100, baos); //bm is the bitmap object
byte[] b = baos.toByteArray();
//String encodedImage = Base64.encode(b, Base64.DEFAULT);
encodedImage = Base64.encodeBytes(b);
Run Code Online (Sandbox Code Playgroud) 我需要将JSON上传到服务器,所以我尝试使用base64对其进行编码,然后通过JSON发送它,但在服务器端解码图像时,图像显示已损坏.我甚至尝试在线base64到图像转换器,结果是一样的.
这是我的活动代码,我从图库或相机中选择后将图像编码为base64.
package com.paaltao.activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Base64;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkError;
import com.android.volley.NoConnectionError;
import com.android.volley.ParseError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.ServerError;
import com.android.volley.TimeoutError;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonObjectRequest;
import com.github.mrengineer13.snackbar.SnackBar;
import com.kbeanie.imagechooser.api.ChooserType;
import com.kbeanie.imagechooser.api.ChosenImage;
import com.kbeanie.imagechooser.api.ImageChooserListener;
import com.kbeanie.imagechooser.api.ImageChooserManager;
import com.paaltao.R;
import com.paaltao.classes.SharedPreferenceClass;
import com.paaltao.network.VolleySingleton;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream; …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Android应用程序,它的视图包含多个Gallerys.Gallerys(Bitmaps)的内容是互联网上的红色.
对于第一个库,一切正常,但在尝试下载第二个Gallery的第一个图像时,BitmapFactory.decodeStream(InputStream)返回null,而流是非null.
public void loadBitmap() throws IOException {
for (int i = 0; i < images.size(); ++i) {
URL ulrn = new URL(images.get(i).getThumbUrl());
HttpURLConnection con = (HttpURLConnection) ulrn.openConnection();
InputStream is = con.getInputStream();
images.get(i).setImage(BitmapFactory.decodeStream(is));
Log.i("MY_TAG", "Height: " + images.get(i).getImage().getHeight());
}
}
Run Code Online (Sandbox Code Playgroud)
所述getThumbUrl()返回图像的URL(例如http://mydomain.com/image.jpg)和它抛出一个NullPointerException在线路Log.i("MY_TAG", "Height: ... )
(images为ArrayList我的类,其保持URL和位图也包含对象).
谢谢你的建议!