у меня есть изображение в поле таблицы изображений, и я хочу использовать это изображение в моем приложении
моя страница php
$user = array();
$user["image"] = base64_encode($result["image"]);
// success
$response["success"] = 1;
// user node
$response["image_table"] = array();
array_push($response["image_table"], $user);
когда я использую этот массив в моем приложении, я использую это …
if (success == 1)
{
address = json.getJSONArray(TAG_IMAGE_TABLE);
for (int i = 0; i < address.length(); i++) {
JSONObject c = address.getJSONObject(i);
image = c.getString(TAG_IMAGE);
}
это дает мне результат как
json response: {"success":1,"image_table": [{"image":"iVBORw0KGgoAAA...................."
когда я использую это изображение в моем представлении изображения, я использую это как
ImageView ivProperty = ((ImageView) myContentView.findViewById(R.id.image_property));
byte[] decodedString;
try {
decodedString = Base64.decode(image, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
ivProperty.setImageBitmap(decodedByte);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Но это дает мне исключение нулевого указателя
мои значения logcat
03-27 10:10:44.355: E/AndroidRuntime(2391): java.lang.NullPointerException: Input string was null.
03-27 10:10:44.355: E/AndroidRuntime(2391): at com.big_property_info.Base64.decode(Base64.java:1242)
03-27 10:10:44.355: E/AndroidRuntime(2391): at com.big_property_info.MainActivityMap$GeocoderTask$2.getInfoContents(MainActivityMap.java:314)
Как решить эту исключительную ситуацию нулевого указателя … когда я получаю строку изображения …..
Вы можете легко использовать Picasso для загрузки изображений. Например:
Picasso.with(getActivity()).load(url).into(imageView);
Проверьте этот. Его библиотека загрузчиков изображений и прост в реализации.
DisplayImageOptions imageOptions;
ImageLoader imageLoader;
imageOptions = new DisplayImageOptions.Builder().showImageForEmptyUri(R.drawable
.logo_image).showImageOnFail(R.drawable.logo_image).cacheInMemory(true)
.cacheOnDisk(true)
.build();
imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
imageLoader.displayImage(uri, imageView, imageOptions);
//Where uri is url of imageview stored in server. imageview is Imageview in which you want to show image.
Проверьте ссылку на документ в github.
Вы должны проверить свою строку, является ли она нулевой или нет.
ImageView ivProperty = ((ImageView) myContentView.findViewById(R.id.image_property));
byte[] decodedString;
try {
if (image!=null&&!image.equalsIgnoreCase("")) {
decodedString = Base64.decode(image, Base64.URL_SAFE);
Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
ivProperty.setImageBitmap(decodedByte);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Может быть проблема вызывает из-за набора символов, который используется для кодирования и декодирования в PHP и Android
Используйте один и тот же набор символов для обоих концов для кодирования и декодирования данных изображения
перейдите по этой ссылке, чтобы решить вашу проблему
https://stackoverflow.com/a/15156991/4985541
Если вы получаете изображение в строке Base64, вы можете декодировать его следующим образом:
byte[] data = Base64.decode(base64, Base64.DEFAULT);
String text = new String(data, "UTF-8");
Или вы можете получить ссылку также с сервера и использовать приведенный ниже код, чтобы показать ее на изображении.
if (imageUrl != null && isImageUrl) {
Picasso.with(getApplicationContext()).load(Constants.IMG_URL + imageUrl).resize(150, 100).centerInside().into(ivActionHome);
}