Android客户端如何从Web服务端加载图片

在android项目研发中,相信很多小伙伴都会遇到app上需要加载图片的时候,很多初学的小伙伴对此会感到比较头疼,这里我就详细滴讲一下关于android中加载图片的方法。

无论是加载自己图片,还是网络上的图片,最大的区别在于获取图片的链接。。。

一,首先做一个web端的服务,将图片发布在Jboss或者Tomcat中,通过链接可以获取到图片。

       这里做一个动态获取图片的案例,将其他地址的图片,获取后保存到Jboss项目目录下面:

//代码片段,从文件夹里获取一张图片存储到jboss项目路径中

 byte[]  buffer=readImgData(pathStr);
File  imgfile=new File("F:\\jboss\\server\\default\\deploy\\MyFirstWebServices.war\\temp.jpg");
       //判断文件是否存在
       if(!imgfile.exists()){
        imgfile.delete();
       }
       FileOutputStream  output=new FileOutputStream(imgfile);
       output.write(buffer);
       output.flush();
       output.close();

//从一个图片路径中获取图片 

public byte[] readImgData(String filepath){
  try{
    File  file = new File(filepath);
    FileInputStream  input = new FileInputStream(file);
    ByteArrayOutputStream  output = new ByteArrayOutputStream();
    byte[]  buffer=new byte[1024];
    int len = 0;
    while ((len = input.read(buffer))!=-1) {
     output.write(buffer, 0, len);
    }

    input.close();
    return output.toByteArray();
    }catch(Exception e){
     e.printStackTrace();
    }  
    return null;
   }

 项目部署好后发布项目即可访问到图片信息如下:

http://localhost:8080/MyFirstWebServices/temp.jpg;

二,android中显示图片的代码。

1.imgshow.xml中的代码片段,放一个imageview即可

                           android:id="@+id/sat_show_image"
                    android:layout_width="400dp"
                    android:layout_height="200dp" 
     android:layout_gravity="center"
     android:scaleType="fitXY" 
                    android:layout_centerVertical="true"
     android:layout_span="2"
     />

2.imgshow.java代码片段

 private ImageView  satimg;
 String imageUrl="http://localhost:8080/MyFirstWebServices/temp.jpg";
  private Handler handler = new Handler(){
         public void handleMessage(Message msg) {
             switch (msg.what) {
             case 0:
                 Bitmap bit = (Bitmap) msg.obj;
              satimg.setImageBitmap(bit);
              satimg.setScaleType(ImageView.ScaleType.FIT_XY);
                 break;
             default:
                 break;
             }
         };

     };

@Override
 protected void onCreate(Bundle savedInstanceState)
 {
  // TODO Auto-generated method stub
  super.onCreate(savedInstanceState);
  setContentView(R.layout.imgshow);

  satimg = (ImageView)findViewById(R.id.sat_show_image);

  record_img.setOnClickListener( new OnClickListener()
  {
   
   @Override
   public void onClick(View arg0)
   {
    // TODO Auto-generated method stub
                 //新建线程加载图片信息,发送到消息队列中 
                 new Thread(new Runnable() { 
  
                     @Override 
                     public void run() { 
                         // TODO Auto-generated method stub 
                         Bitmap bmp = getURLimage(imageUrl); 
                         Message msg = new Message(); 
                         msg.what = 0; 
                         msg.obj = bmp; 
                         System.out.println("000"); 
                         handler.sendMessage(msg); 
                     } 
                 }).start(); 
     }
   });
 }

 

  //加载图片 
    public Bitmap getURLimage(String url) { 
        Bitmap bmp = null; 
        try { 
            URL myurl = new URL(url); 
            // 获得连接 
            HttpURLConnection conn = (HttpURLConnection) myurl.openConnection(); 
            conn.setConnectTimeout(6000);//设置超时 
            conn.setDoInput(true); 
            conn.setUseCaches(false);//不缓存 
            conn.connect(); 
            InputStream is = conn.getInputStream();//获得图片的数据流 
            bmp = BitmapFactory.decodeStream(is); 
            is.close(); 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 
        return bmp; 
    } 

 

完成以上步骤,即可在app中显示图片。

你可能感兴趣的:(Android加载图片)