读取网络图片

利用bitmap读取网络图片,太简单没什么好说的,注意更新UI要在主线程上,不然会报错。

package com.example.web_bitmap;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import com.example.web_bitmap.R.id;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ImageView;

public class MainActivity extends Activity {
    private ImageView show;
    private static final String PATH = "http://b.hiphotos.baidu.com/image/pic/item/08f790529822720efdd99bf379cb0a46f21faba0.jpg";
    private Handler handle=new Handler(){
        public void handleMessage(Message msg) {
            Bitmap bit=(Bitmap) msg.obj;
            show.setImageBitmap(bit);
        }

    };
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        show = (ImageView) findViewById(id.show);
        Thread thread = new Thread(null, webInback, "readImage");
        thread.start();
    }

    public Runnable webInback = new Runnable() {
        public void run() {
            byte data[]=readBitmap();
            Bitmap bit=BitmapFactory.decodeByteArray(data, 0, data.length);
            Message msg=Message.obtain();
            msg.obj=bit;
            handle.sendMessage(msg);
        }
    };

    public byte[] readBitmap() {
        // 内存操作流
        ByteArrayOutputStream bos = null;
        try {
            URL url = new URL(PATH);
            bos = new ByteArrayOutputStream();
            byte data[] = new byte[1024];
            HttpURLConnection urlConnection = (HttpURLConnection) url
                    .openConnection();
            InputStream inputStream = urlConnection.getInputStream();
            int length = 0;
            while ((length = inputStream.read(data)) != -1) {
                bos.write(data, 0, length);
            }
        } catch (Exception e) {
            System.out.println("读取失败");
        } finally {
            if (bos != null) {
                try {
                    bos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return bos.toByteArray() ;

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    tools:context="com.example.web_bitmap.MainActivity" >

    <ImageView
        android:id="@+id/show"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:contentDescription="@string/web" />

</LinearLayout>
时间: 2024-10-22 10:48:10

读取网络图片的相关文章

WP_图片管理机制/异步读取网络图片

项目有这样的需求, 要求窗口加载一揽子图片,为了不让UI阻塞太久,采用异步读取后绑定显示的方案. 图片的下载应该采用并发的过程(等待网络响应会很耗时,一张一张的下载,等待时间太长) 图片的下载不能占用过多的线程数,应有个阀值(图片不是核心业务,不能占用那么多资源) 在图片加载的过程中,如果用户有操作,比如窗口跳转,则未加载完成的图片加载的过程应取消(为了替用户节省流量). 需求就是这么多了,如何实现呢? 思路是这样的,由于需要异步,且需要等待,首先想到使用队列,先让队列排列起来,再定量迭代读取.

Android读取网络图片

本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 在android4.0之后,已不同意在主线程中进行网络请求操作了, 否则会出现NetworkOnMainThreadException异常. 而为了解决在android4.0之上能够进行网络的请求,能够有两种方法来解决,以读取网络的图片为例,先看效果图: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamVzc29uMjAxMjEwM

wpf读取网络图片:

原文:wpf读取网络图片: 项目发布之后,图片保存到服务器(成为网络图片): 读取方法如下面所示: private void ViewImage(string fileUri) { BitmapImage bitImage = new BitmapImage(); bitImage.BeginInit(); bitImage.UriSource = new Uri(fileUri, UriKind.Absolute); bitImage.DecodePixelWidth = 300; bitIm

Java读取网络图片并存储

最近搞公司一个Web项目,需要下载网络图片,于是又重拾起一些最基础的东西,各种流的数据传递,简单弄了个非常方便下载网络图片的例子,代码很简单,贡献给大家! 总结一下,下载图片主要就四步: 1:拿到网络图片的绝对路径,建立连接 2:将连接中的数据读入到输入流中 3:将输入流中的数据读取到输出流中,一般用FileOutputStream,可以直接保存为文件 4:关闭流对象 项目非常简单,就两个类,可以直接运行!

Android 利用 AsyncTask 异步读取网络图片

1.新建Android工程AsyncLoadPicture 新建布局文件activity_main.xml主界面为一个GridView,还有其布局文件gridview_item.xml 2.功能主界面MainActivity.java,主代码如下 1 package com.example.asyncloadpicture; 2 3 import java.util.ArrayList; 4 5 import android.app.Activity; 6 import android.cont

Android--网络通信(读取网络图片的示例)

.xml代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" and

[原创]cocos2dx加载网络图片&amp;异步加载图片

[动机] 之前看到一款卡牌游戏,当你要看全屏高清卡牌的时候,游戏会单独从网络上下载,本地只存了非高清的,这样可以省点包大小,所以我萌生了实现一个读取网络图片的类. [联想] 之前浏览网页的时候经常看到一张图片渐进(由模糊变清晰)的显示,如果在游戏中,诸如像显示高清卡牌的时候,使用有这种方式去显示一张图片,这样的体验应该会稍微好些 [相关知识] png interlaced:png图片在导出的时候是可以选择 interlaced (Adam7)的,这样的存储的png在网页上显示会渐进显示, 这种i

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

android源码大放送(实战开发必备),免费安卓demo源码,例子大全文件详细列表

免费安卓demo源码,例子大全文件详细列表 本列表源码永久免费下载地址:http://www.jiandaima.com/blog/android-demo 卷 yunpan 的文件夹 PATH 列表 卷序列号为 0000-73EC E:. │ jiandaima.com文件列表生成.bat │ 例子大全说明.txt │ 本例子永久更新地址~.url │ 目录列表2016.03.10更新.txt │ ├─前台界面 │ ├─3D标签云卡片热门 │ │ Android TagCloudView云标签