`
yang__yuan
  • 浏览: 26758 次
  • 性别: Icon_minigender_2
  • 来自: 深圳
社区版块
存档分类

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即可

       <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 客户端和 web服务器

    掌握基于HttpClient、JSON数据...掌握将服务器响应装换为JSON对象或数组、通过Android客户端加载服务器响应; 开发java web project作为服务端; 开发Android客户端; 采用HttpClient的方式在服务端和客户端进行通信;

    工程硕士学位论文 基于Android+HTML5的移动Web项目高效开发探究

    1.2.4 Android移动Web项目开发的三种解决方案:Native, Web和Hybrid优缺陷分析 4 1.2.5国内外应用现状 6 1.2.6 研究现状总结 7 1.3研究目标与内容 7 1.3.1多窗口浏览器模式的实现机制 7 1.3.2跨域交互即缓存处理方法...

    android高考宝典系统毕业设计论文

    2.3.2 Web服务端技术论证 6 2.3.3 数据库论证 7 3 系统总体设计 8 3.1架构设计 8 3.2 系统功能设计 8 3.2.1手机客户端功能设计: 10 3.2.2 Web服务端功能设计: 11 3.3 数据库设计 13 3.3.1 系统E-R图 13 3.3.2 ...

    android动态加载类

    android服务端动态加载类。  在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优势...

    android开发demo集合

    41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI线程中的View测试 44、ImageSwitcher animation gesture实现可以滑动的跑马灯...

    android初学者入门项目

    41、AIDL Service android中的跨进程调用 客户端,服务端见AidlService 42、BroadcastReceiver 接收广播消息 43、非UI线程中不能操作UI线程中的View测试 44、ImageSwitcher animation gesture实现可以滑动的跑马灯...

    Android典型技术模块开发详解

    8.6.1 WebView加载web页面 8.6.2 WebView中对JavaScript的支持 8.7 Gallery (画廊) 8.8 SlidingDrawer(滑动抽屉) 8.9 Dialog(对话框) 8.9.1 AlertDialog警告框 8.9.2 ProgressDialog进度框 8.9.3 ...

    安卓毕业设计app源码-fengyun:fengyun

    Web文件夹为服务端源码 开发环境 Android Studio 2.4 第六次预览版 IDEA 2018.3.2版本 JDK 1.8 compileSdkVersion 25 buildToolsVersion "25.0.2" classpath 'com.android.tools.build:gradle:2.3.2' 个推及阿里云...

    JAVA上百实例源码以及开源项目

     Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...

    JAVA上百实例源码以及开源项目源代码

    Tcp服务端与客户端的JAVA实例源代码 2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多...

    java开源包5

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    Highcharts-8.1.2.zip

    Highcharts 是一个用纯 JavaScript 编写的一个图表库, 能够很简单便捷的在 Web 网站或是 Web 应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。 Highcharts 支持的图表类型有直线...

    java开源包1

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包11

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包2

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包3

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包6

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包10

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

    java开源包4

    使用简便和直截了当,用户只需要加载的图片和调整帧您想要的,如位置,时间显示和处理方法前帧。 Java的PList类库 Blister Blister是一个用于操作苹果二进制PList文件格式的Java开源类库(可用于发送数据给iOS应用...

Global site tag (gtag.js) - Google Analytics