5

嗨,伙计们,以及我想从服务器加载图像,根据ID号,这将是最好的方法来从Web服务回顾它可以任何人指导我? ?如何从Web服务到Android应用程序的图像

package com.crispsys; 

import java.io.IOException; 
import java.net.MalformedURLException; 
import java.net.URL; 

import android.app.Activity; 
import android.app.ProgressDialog; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.os.Handler; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.widget.TextView; 
import android.widget.Toast; 

public class imageviewer extends Activity { 
    /** Called when the activity is first created. */ 

    Bitmap image; 
    private TextView ordernumber; 
    ImageView imageView; 
    private Button butt; 
    String Str="image",ordno; 


    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.imageviewerr); 

     this.butt = (Button) this.findViewById(R.id.getbutt); 
      this.imageView =(ImageView) findViewById(R.id.blodig); 
      this.ordernumber=(TextView)this.findViewById(R.id.ordernotext); 

      final Bundle getdata = getIntent().getExtras(); 

      if (getdata != null)  
      { 
       ordno=getdata.getString("orono"); 
       ordernumber.setText(ordno); 
      } 


     this.butt.setOnClickListener(new View.OnClickListener() { 

      public void onClick(View v) { 
       // TODO Auto-generated method stub 


       Toast.makeText(getApplicationContext(),"loading" , Toast.LENGTH_LONG).show(); 

         URL url = null; 


         try 
         { 

          url = new URL("http://www.cyberstudents.in/aaa/car.jpg"); 

         } 
         catch (MalformedURLException e) 
         { 
          e.printStackTrace(); 
         } 
         try { 
          image = BitmapFactory.decodeStream(url.openStream()); 

         } 
         catch (IOException e) 
         { 
          e.printStackTrace(); 
         } 

       imageView.setImageBitmap(image); 
      } 
     }); 

    } 
} 

XML文件:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@drawable/cr_isp" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <TextView 
      android:id="@+id/ordernotext" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textColor="#8B8682" 
      android:text="" /> 


    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/getbutt" 
      android:layout_width="210dp" 
      android:layout_height="40dp" 
      android:background="@drawable/bcbut" 
      android:textColor="#8B8682" 
      android:text="Get Block Dig" /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="match_parent" 
     android:gravity="center" 
     android:paddingTop="20dp" 
     android:layout_height="wrap_content" > 

     <ImageView 
      android:id="@+id/blodig" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_launcher" /> 

    </TableRow> 

</LinearLayout> 
  • 试图用这种编码,但是当我去的大尺寸图像它不工作我只能用小尺寸的图像工作,它仍然是相同的,我不能发现其显示相同屏幕的任何错误
+0

描述你的问题。你解析XML吗? –

+0

尝试搜索'通用图像加载器在Android'' –

+0

Krishna Suthar actualli我尝试了这两种类型的URL和base64转换字符串时,我检查与上述代码我可以加载小尺寸图像, – user1389233

回答

1

使用该ID号码向Web服务发出获取请求,服务响应所需的图像。

2

它取决于来自服务器的响应,即它以哪种形式提供图像。 它可以是base 64字符串或URL的形式。

如果它是一个基本的64字符串,那么你使用java中的base64类对它进行编码,如果它的url,那么你只需要通过将图像从url中的位图发送到位图来设置图像。 您需要使用httpGet按以下方式向服务器发出获取请求。

public static String connect(String url) throws IOException { 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpGet httpget = new HttpGet(url); 
    HttpResponse response; 
    try { 
     response = httpclient.execute(httpget); 
     HttpEntity entity = response.getEntity(); 
     if (entity != null) { 
      InputStream instream = entity.getContent(); 
      result = convertStreamToString(instream); 
      instream.close(); 
     } 
    } catch (ClientProtocolException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 


private static String convertStreamToString(InputStream input) { 
    /* 
    * To convert the InputStream to String we use the 
    * BufferedReader.readLine() method. We iterate until the BufferedReader 
    * return null which means there's no more data to read. Each line will 
    * appended to a StringBuilder and returned as String. 
    */ 
    BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
    StringBuilder buffer = new StringBuilder(); 
    String line = null; 
    try { 
     while ((line = reader.readLine()) != null) { 
      buffer.append(line + "\n"); 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     try { 
      input.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
    return buffer.toString(); 
} 
+0

q是关于图像不是字符串。 – Tina

10

您可以使用异步映像加载器异步加载映像。检查下面的代码。

private class FetchImageTask extends AsyncTask<String, Integer, Bitmap> { 
    @Override 
    protected Bitmap doInBackground(String... arg0) { 
     Bitmap b = null; 
     try { 
      b = BitmapFactory.decodeStream((InputStream) new URL(arg0[0]).getContent()); 
     } 
     catch (MalformedURLException e) { 
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return b; 
    } 
} 

要实现使用此代码。

new FetchImageTask() { 
     @Override 
     protected void onPostExecute(Bitmap result) { 
      if (result != null) { 
       image.setImageBitmap(result); 
      } 
     } 
    }.execute("IMAGE_URL"); 
相关问题