Получить изображение из MySQL-PHP (Android)

у меня есть изображение в поле таблицы изображений, и я хочу использовать это изображение в моем приложении
моя страница 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)

Как решить эту исключительную ситуацию нулевого указателя … когда я получаю строку изображения …..

7

Решение

Вы можете легко использовать Picasso для загрузки изображений. Например:

Picasso.with(getActivity()).load(url).into(imageView);
1

Другие решения

Проверьте этот. Его библиотека загрузчиков изображений и прост в реализации.

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.

1

Вы должны проверить свою строку, является ли она нулевой или нет.

 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();
}
0

Может быть проблема вызывает из-за набора символов, который используется для кодирования и декодирования в PHP и Android

Используйте один и тот же набор символов для обоих концов для кодирования и декодирования данных изображения

перейдите по этой ссылке, чтобы решить вашу проблему
https://stackoverflow.com/a/15156991/4985541

0

Если вы получаете изображение в строке 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);
}
0
По вопросам рекламы [email protected]