Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从PHP到Android的图像库_Php_Android_Json_Webserver_Android Gallery - Fatal编程技术网

从PHP到Android的图像库

从PHP到Android的图像库,php,android,json,webserver,android-gallery,Php,Android,Json,Webserver,Android Gallery,我正在尝试制作一个从PHP服务器拍摄的图像库,以便在我的Android应用程序中显示 我制作了一个列表视图,通过位图显示所有图像,我还创建了一个类图像,带有相应的适配器来转换图像。我使用JSON作为PHP和android之间信息交换的标识符。 通过这种方式,我在base64 webservice中检索图像,然后将数据解码并转换为位图,该位图存储在我的应用程序的属性中。此外,我还有相应的文件images.php,允许我访问这些图像 我的问题是,应用程序根本不显示任何内容,那么我不知道这是我的代码问

我正在尝试制作一个从PHP服务器拍摄的图像库,以便在我的Android应用程序中显示

我制作了一个列表视图,通过位图显示所有图像,我还创建了一个类图像,带有相应的适配器来转换图像。我使用JSON作为PHP和android之间信息交换的标识符。 通过这种方式,我在base64 webservice中检索图像,然后将数据解码并转换为位图,该位图存储在我的应用程序的属性中。此外,我还有相应的文件images.php,允许我访问这些图像

我的问题是,应用程序根本不显示任何内容,那么我不知道这是我的代码问题,还是你应该尝试另一种方法让gallery display服务器拍照

这是我的代码:

MainActivity.java

package com.example.servidorphpuca;
import android.app.Activity;
import android.os.Bundle;

import java.util.ArrayList;

import android.view.Menu;
import android.widget.ListView;

public class Tercero extends Activity {

    public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_tercero);

          ListView lvImages = (ListView) findViewById(R.id.lv_images);
          ArrayList<Imagen> imagesAvaiable = new ArrayList<Imagen>();

          //MY SECUNDARY THREAD
          MiThread hilo= new MiThread(imagesAvaiable);
          hilo.start();

          // create the object Adapterimagen and assign it to the ListView 
          Adapterimagen imageAdapter = new Adapterimagen(this, imagesAvaiable);
          lvImages.setAdapter(imageAdapter);
        }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.tercero, menu);
        return true;
    }

}
我创建了另一个名为AdapterImage的类,以使适配器连接到ListView:

package com.example.servidorphpuca;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class Adapterimagen extends BaseAdapter {
      protected Activity activity;
      protected ArrayList<Imagen> items;

      public Adapterimagen(Activity activity, ArrayList<Imagen> items) {
        this.activity = activity;
        this.items = items;
      }

      @Override
      public int getCount() {
        return items.size();
      }

      @Override
      public Object getItem(int position) {
        return items.get(position);
      }

      @Override
      public long getItemId(int position) {
        return items.get(position).getId();
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;

        if(convertView == null) {
          LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          vi = inflater.inflate(R.layout.list_item_layout, null);
        }

        Imagen img1 = items.get(position);

        ImageView image = (ImageView) vi.findViewById(R.id.imagenImage);
        image.setImageBitmap(img1.getPhoto());

        return vi;
      }
    }
以及PHP代码:

    <?php  

$con = mysqli_connect('-----------', '-------', '--------', '-------');  
mysql_query("SET CHARACTER SET utf8");  
mysql_query("SET NAMES utf8");  

$images['images'] = array();

if( $con )  
{  
  mysql_select_db('images');  

  $res = mysql_query('select clave_id, ruta_imagen from images');

  while( $row = mysql_fetch_array($res) ) {
    array_push($images['images'], array('clave_id' => $row['clave_id'], 'ruta_imagen' => base64_encode($row['ruta_imagen'])));
  }
  mysql_free_result($res);
  mysql_close($con);
}

header('Content-type: application/json');
echo json_encode($images);


?>

我找到了很多关于如何使用单个图像甚至从内存或SD卡执行此操作的教程,但问题是我想处理一组来自服务器的图像,没有固定数量的图像。

将来自服务器的图像的热链接放在JSON中,在应用程序端使用必要的代码解析JSON,并通过加载listview中的图像。

请发布相关代码。添加,因此,可以看到我到目前为止所做的。感谢您的回答^^我还没有太多的Android经验,所以我不知道应用程序的代码可以如何帮助,甚至不知道如何使代码适应我的应用程序。虽然我真正看到的是这个应用程序实现了我想要实现的目标:将图片库PHP应用到一个应用程序中。检查这个示例:使用一个类似的示例,我是如何完成我现在在应用程序中所做的事情的,但没有结果,我编辑了文章以放置代码。我甚至没有从图像列表中显示密钥ID…web链接php文件的输出中有eroor。首先,编辑那个。json数组中没有图像,也包含原始php代码输入输出。Web link的php文件输出应该是这样的:如果您引用$con=mysqli\u connect,我在这里使用它是因为它有数据库的名称和密码,但是如果您需要,我会将它放在这里,以便您可以尝试。如果您指的是图像的集合,则在服务器上使用循环同时拾取图像,然后我将图像移动到图像以插入阵列及其相应的key_id和route_image。我不知道怎么才能像你说的那样,因为它应该是动态图像,我没有固定数量的图像。
package com.example.servidorphpuca;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;

public class Adapterimagen extends BaseAdapter {
      protected Activity activity;
      protected ArrayList<Imagen> items;

      public Adapterimagen(Activity activity, ArrayList<Imagen> items) {
        this.activity = activity;
        this.items = items;
      }

      @Override
      public int getCount() {
        return items.size();
      }

      @Override
      public Object getItem(int position) {
        return items.get(position);
      }

      @Override
      public long getItemId(int position) {
        return items.get(position).getId();
      }

      @Override
      public View getView(int position, View convertView, ViewGroup parent) {
        View vi=convertView;

        if(convertView == null) {
          LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
          vi = inflater.inflate(R.layout.list_item_layout, null);
        }

        Imagen img1 = items.get(position);

        ImageView image = (ImageView) vi.findViewById(R.id.imagenImage);
        image.setImageBitmap(img1.getPhoto());

        return vi;
      }
    }
    <?php  

$con = mysqli_connect('-----------', '-------', '--------', '-------');  
mysql_query("SET CHARACTER SET utf8");  
mysql_query("SET NAMES utf8");  

$images['images'] = array();

if( $con )  
{  
  mysql_select_db('images');  

  $res = mysql_query('select clave_id, ruta_imagen from images');

  while( $row = mysql_fetch_array($res) ) {
    array_push($images['images'], array('clave_id' => $row['clave_id'], 'ruta_imagen' => base64_encode($row['ruta_imagen'])));
  }
  mysql_free_result($res);
  mysql_close($con);
}

header('Content-type: application/json');
echo json_encode($images);


?>