想法:通过网络链接,获取html文档,再从文档中得到img标签,处理得到src,再通过imageview进行显示

代码会有一点问题,仅作参考:

1.ConnectDeal 类,代码实现了以上全部功能:

URL使用了baidu,因为网页的html会有所不同,所以其他网页可能会报错(虽然使用了正则表达式Matcher,但确实其他网页有报错);还有网络操作必须在子进程中完成。

public class ConnectDeal {
    private final static String URL="http://www.baidu.com";
    
    TextView textView2 = null;
    ImageView imageView=null;
    //网页的HTML文档
    private static String HTML = "";
    // 获取img标签正则
    private static final String IMGURL_REG = "<img.*src\\s*=\\s*(.*?)[^>]*?>";  // 获取src路径则
    private static final String IMGSRC_REG = "src\\s*=\\s*\"?(.*?)(\"|>|\\s+)";
    
    public ConnectDeal(TextView textView,ImageView imageView) {
        // TODO Auto-generated constructor stub
        this.imageView = imageView;
        this.textView2 = textView;
//        getHtml();
    }

public void getHtml() {
        new Thread(new Runnable() {
            @Override
            public void run() {
                // TODO Auto-generated method stub
            try {
                //获取html
                String html =getPictureData(URL);
                
                //获取img标签
                List<String> list =getImageURL(html);
     
                //获取img src
                list = getImageSrc(list);
                textView2.setText(list.toString());
                
                //将图片显示再imageview
                lookImg(list);
            } catch (Exception e) {
                Log.e("GetHtmlCodeActivity", e.toString());
                
            }
            }
        }).start();
    }
    
      //得到Html文档,函数名有问题
    public String getPictureData(String path) throws Exception{
        // 类 URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。
        URL url = new URL(path);
        // 每个 HttpURLConnection 实例都可用于生成单个请求,
        //但是其他实例可以透明地共享连接到 HTTP 服务器的基础网络
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        //设置 URL 请求的方法
        conn.setRequestMethod("GET");
        //设置一个指定的超时值(以毫秒为单位),
        //该值将在打开到此 URLConnection 引用的资源的通信链接时使用。
        conn.setConnectTimeout(5 * 1000);
        // conn.getInputStream()返回从此打开的连接读取的输入流
        InputStream inStream = conn.getInputStream();// 通过输入流获取html数据
        byte[] data = readInputStream(inStream);// 得到html的二进制数据
        String html = new String(data);
        return html;
        
    }
    //读取输入流中的数据,返回字节数组byte[]
    public byte[] readInputStream(InputStream inStream) throws Exception{
        //此类实现了一个输出流,其中的数据被写入一个 byte 数组
        ByteArrayOutputStream outStream = new ByteArrayOutputStream();
        // 字节数组
        byte[] buffer = new byte[1024];
        int len = 0;
        //从输入流中读取一定数量的字节,并将其存储在缓冲区数组buffer 中
        while ((len = inStream.read(buffer)) != -1) {
            // 将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流
            outStream.write(buffer, 0, len);
        }
        inStream.close();
        //toByteArray()创建一个新分配的 byte 数组。
        return outStream.toByteArray();
    }

//获取img标签
    public List<String> getImageURL(String html) {
        Matcher matcher = Pattern.compile(IMGURL_REG).matcher(html);
        List<String> list = new ArrayList<String>();
        Log.e("my", "finding");
        while (matcher.find()) {
            list.add(matcher.group());
        }
        Log.e("my", "list : 12"+list.toString());
        return list;
    }

//获取img中src链接;
    public static List<String> getImageSrc(List<String> listUrl) {
        List<String> listSrc = new ArrayList<String>();
        for (String img : listUrl) {
            Matcher matcher = Pattern.compile(IMGSRC_REG).matcher(img);
            while (matcher.find()){

listSrc.add(matcher.group().substring(6,
                        matcher.group().length() - 1));
            }

}
        System.out.println(listSrc.toString());
        return listSrc;
    }

//图片放入imageView

private void lookImg(List<String> list) throws IOException {
        URL uri = null;
        Bitmap bitmap =null;
        for(String url : list) {
            url ="http://"+url;
            uri =new URL(url);
            HttpURLConnection connection =(HttpURLConnection) uri.openConnection();
            connection.connect();
            InputStream is=connection.getInputStream();
            bitmap =BitmapFactory.decodeStream(is);
            is.close();
            imageView.setImageBitmap(bitmap);
        }
        //只看了最后一张
        
    }

}

2.MainActivity中

使用了两个控件textview 和 imageview

直接实现类,调用getHtml()函数

ConnectDeal connectDeal =new ConnectDeal(textView2, imageView);
connectDeal.getHtml();

3.Manifest 加入网络权限

<uses-permission android:name="android.permission.INTERNET"/>

最后的效果

textview显示img的src表示查找到的图片

通过网络链接显示网页中的图片相关推荐

  1. 浏览器打开服务器上的图片无法显示,网页中的图片打不开怎么办?原因与解决办法...

    最近有网友问小编这样一个很泛的问题:网页中的图片打不开怎么办?对于这个问题,其实导致的原因有很多,但也很好排除原因,主要从网络,网页,平台等当面综合去分析,就很容易可以找到答案.以下是小编对网页中的图 ...

  2. 网易服务器图片不显示图片,为什么网易的网页中部分图片不能正常显示?

    为什么网易的网页中部分图片不能正常显示? 来源:互联网  宽屏版  评论 2010-07-22 11:29:19 分类: 电脑/网络 >> 互联网 问题描述: 参考答案: 开始--> ...

  3. html给网页加图片背景颜色,0035 如何设置网页背景图和在网页中插入图片

    上节课讲了关于表格的一些更多知识和用表格配合div来进行网页排版. 这节课开始讲关于网页图片的相关知识. 上节课的课后练习 1.去网上搜索2个自己喜欢的图片,1个图片用来作为整个网页的背景,另一个图片 ...

  4. vue通过链接显示服务器上的图片_图片网站该如何做SEO优化?详细讲解图片优化技巧...

    通常,在网站搜索引擎优化的过程中,很多站长和SEOer经常忽略图片的优化,但事实上,每个网站都有很多图片,所以优化网站图片就像优化其他内容一样,成为搜索引擎优化的一个重要工作内容. 如果你能成功地优化 ...

  5. python获取网页图片_python抓取网页中的图片示例

    python抓取网页中的图片示例 代码如下: #coding:utf8 import re import urllib def getHTML(url): page = urllib.urlopen( ...

  6. 如何在网页中加入图片

    网页是一个文本文件,但是没办法加入音频或者视频,需要把外部图片引入网页中 图片标签用于向当前页面中引入一个外部的图片. 使用img标签来引入外部图片,img标签是一个自结束标签 src属性指定的是外部 ...

  7. 如何下载网页中的图片

    http://qzher.com/?p=218 如何下载网页中的图片 发表日期 2016年4月25日 by qzher https://tuchong.com/1181287/12974705/ 怎么 ...

  8. go语言并发下载电影和视频,根据m3u8索引url下载视频.下载网页中的图片,可以从当前页向下搜索层数.

    一,根据URL的m3u8索引,下载视频文件. 二,下载网页中的图片. 为了家里小朋友,要下载一个视频,放在电视上看. 所以利用一点时间,写了这个简单下载程序.如果视频有加密,会对其解密. 最近下点图片 ...

  9. Delphi提取网页中的图片

    无意中,在csdn论坛中看到关于"提取网页中的图片资源"的帖子,特摘抄之. simonhehe提供相关代码如下: procedure TfrmMain.DomImg2Image(w ...

最新文章

  1. shell脚本之case用法
  2. iOS 延迟1.5s 执行方法
  3. Python实现奖金计算两种方法的比较
  4. IBM 计划在公司内部推行基于比特币的开源项目Hyperledger
  5. 680. 验证回文字符串 Ⅱ golang
  6. MFC COMBO-BOX最详细教程
  7. 【前端基础】querySelector
  8. 2021-06-27循环控制 mapSet
  9. java爬虫实例_Java爬虫完整实例源码
  10. IEEE Access模板caption无法换行,换行后标题不居中解决办法
  11. 天然气阶梯是按年还是按月_天然气阶梯不是明年1月1号开始么?怎么现在充气就限量了...
  12. linux上面使用ftdi芯片模拟485串口详解
  13. openid是什么意思?token是什么意思?
  14. javaweb qq空间(博客)项目超详细开发套路原理分析
  15. BUUCTF:[GKCTF2020]Harley Quinn
  16. Photoshop鼠绘教程:逼真鲜活金鱼的绘制
  17. 基于PHP和MySql的学生成绩管理系统(附完整版代码)
  18. 1分钟链圈 | 区块链从业者平均年收入在20万元左右!纳斯达克报告:只有5%的IT供应商部署了区块链...
  19. Oracle公有云的Modifiable VCN功能
  20. 平面设计工作的8个基本技能

热门文章

  1. 网络安全笔记(宏病毒)
  2. HDU3085 Nightmare Ⅱ
  3. 抖音小店如何上传商品?提升精选联盟排名的4大秘籍丨国仁网络
  4. vue如何实现在页面上画画_Vue使用Canvas绘制图片、矩形、线条、文字,下载图片...
  5. java中实现方法重试机制
  6. 使用easypoi导出excel实现动态列
  7. C语言的return用法
  8. 在html中怎么写背景色渐变,CSS 实现背景色渐变和文字颜色渐变(示例代码)
  9. 服务应用执行可疑命令
  10. 健身房信息管理系统(PHP+Html+MySQL)