如何在imageview中显示php图像?

时间:2017-09-12 03:37:07

标签: java php android image imageview

我正在尝试使用此代码并且它无法正常工作。 我该如何下载该图片并进行展示。

我的java代码

private ImageView iv;
private Bitmap bitmap;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_showprofile);

    iv = (ImageView) findViewById(R.id.virus);
    bitmap = getBitmapFromURL("http://getbloodbd.org/image.php?no=4");
    iv.setImageBitmap(bitmap);}

public Bitmap getBitmapFromURL(String src) {
    try {
        URL url = new URL(src);
        HttpURLConnection connection = (HttpURLConnection) url
                .openConnection();
        connection.setDoInput(true);
        connection.connect();
        InputStream input = connection.getInputStream();
        Bitmap myBitmap = BitmapFactory.decodeStream(input);
        return myBitmap;

    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
        return null;
    }
}

我的xml代码是

<ScrollView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    tools:context="org.getbloodbd.getbloodbd.ShowprofileActivity"
    tools:showIn="@layout/app_bar_showprofile">

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/virus"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentStart="true" />

    </RelativeLayout>

和我的PHP代码是和webview方法一样,它工作正常,但图像视图不起作用,但我需要图像视图方法。

   <?php include 'config.php';header("Content-type: image/gif" );$no=$_GET['no']; $dn = mysql_query('select  image from images where no="'.$no.'"'); $dnn = mysql_fetch_array($dn); $data = $dnn['image'];echo base64_decode($data);?>

如何解决?

5 个答案:

答案 0 :(得分:0)

您可以从网址加载图片,如下所示

URL url = new URL("image full path");
Bitmap bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
imageView.setImageBitmap(bmp);

加载图片的另一种方法

private Bitmap bmp;

   new AsyncTask<Void, Void, Void>() {                  
        @Override
        protected Void doInBackground(Void... params) {
            try {
                InputStream in = new URL(IMAGE_URL).openStream();
                bmp = BitmapFactory.decodeStream(in);
            } catch (Exception e) {
               // log error
            }
            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            if (bmp != null)
                imageView.setImageBitmap(bmp);
        }

   }.execute();

reference在这里。 请试试

答案 1 :(得分:0)

请点击此链接Click Here

确保您在AndroidManifest.xml中设置了以下权限才能访问互联网。

<uses-permission android:name="android.permission.INTERNET" />

答案 2 :(得分:0)

您应该使用库Glide:https://github.com/bumptech/glide

进口

"typescript": "2.5.2",
"@angular/compiler": "4.3.6"
"@angular/compiler-cli": "4.3.6"

使用:

compile 'com.github.bumptech.glide:glide:4.1.1'
annotationProcessor 'com.github.bumptech.glide:compiler:4.1.1'

或者如果你想获得Bitmap:

Glide.with(this).load("http://getbloodbd.org/image.php?no=4").into(iv);

答案 3 :(得分:0)

无需为图像加载执行代码。 有一个着名的图书馆加载Android应用程序的图像,毕加索将负责调用重试,也保存图像在应用程序缓存。因此,每次都不会下载相同的图像。

对毕加索的依赖

Glide.with(this).asBitmap().load("http://getbloodbd.org/image.php?no=4").listener(new RequestListener<Bitmap>() {
        @Override
        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {
            return false;
        }

        @Override
        public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
            iv.setImageBitmap(resource);
            return false;
        }
    });

答案 4 :(得分:0)

Yo可以使用PicassoGlide从服务器获取图像并使用大量选项加载到ImageView中。

  • Picasso的样本

    Picasso.with(context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.user_placeholder)
    .error(R.drawable.user_placeholder_error)
    .into(imageView);
    
  • Glide的样本

    GlideApp
    .with(context)
    .load(url)
    .centerCrop()
    .placeholder(R.drawable.loading_spinner)
    .into(imageView);
    

不要忘记在AndroidManifest.xml文件中添加互联网权限。

<uses-permission android:name="android.permission.INTERNET" />