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