用HttpUrlConnection下载图片

安卓案例:基于HttpURLConnection下载文本与图片 目录 一、利用URLConnection下载网络文件 二、运行效果 三、实现步骤 1、创建安卓应用DownloadTextImage 2、主布局资源文件activity_main.xml 3、字符串资源文件strings.xml 4、主界面类MainActivity 5、在Tomcat安装目录的webapps里创建lzy_server目录 6、在lzy_server目录里存放te... 阅读详情

1.使用HttpHttpUrlConnection下载图片

首先在创建好Activity,完成xmlw文件,在AndroidManifest中加入访问网络权限,和访问储存文件的权限。
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
在Activity中设置好控件的绑定和监听事件,6.0以上在Activity中设置动态权限的加载:
package com.example.practice;

import android.Manifest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.SeekBar;

import com.master.permissionhelper.PermissionHelper;

public class DonActivity extends AppCompatActivity implements View.OnClickListener{
    private Button button;
    private SeekBar bar;
    private ImageView imageView;
    private String TAG = "HelloActivity";
    private PermissionHelper permissionHelper;



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_don);
        BlindID();
        permissionHelper = new PermissionHelper(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);

    }

    private void BlindID() {
        button=findViewById(R.id.btn0);
        imageView=findViewById(R.id.imageview);
        bar=findViewById(R.id.bar);
        button.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.btn0:
                button.setEnabled(false);
                permissionHelper.request(new PermissionHelper.PermissionCallback(){

                    @Override
                    public void onPermissionGranted() {
                        //全都授权
                        Log.e(TAG,"onPermissionGranted...");
                      // Dowland dowland=new Dowland(DonActivity.this,button,bar,imageView);
                       DownloadTask downloadTa=new DownloadTask(DonActivity.this,imageView,button);
                        downloadTa.execute("http://img31.mtime.cn/mg/2012/10/30/201631.37192876.jpg","wangz.jpg");

                    }

                    @Override
                    public void onIndividualPermissionGranted(String[] grantedPermission) {
                    //全部禁止授权
                        Log.e(TAG,"onIndividualPermissionGranted...");
                    }

                    @Override
                    public void onPermissionDenied() {
                    //部分授权
                        Log.e(TAG,"onPermissionDenied...");
                    }

                    @Override
                    public void onPermissionDeniedBySystem() {
                    //部分禁止
                        Log.e(TAG,"onPermissionDeniedBySystem...");
                    }
                });


                break;
        }
    }
}
创建一个Download类继承AsyncTask,并重写AsyncTask。创建构造函数用来传送Activity的控件参数。
public class DownloadTask extends AsyncTask<String,Integer,Integer> {
 private Context context;
    private Button btn;
    private ImageView imageView;
    public DownloadTask(Context context,ImageView mimageView,Button downloadBtn){

        this.context=context;
        this.imageView=mimageView;
        this.btn=downloadBtn;

    }
再在doInBackground()里进行耗时的下载操作;定义输入流和输出流,创建好下载的文件目录,
所以我们先需要判断文件是否存在;如果文件存在返回一个值给onPostExecute方法,让其进行存在操作。
如果不存在创建文件目录,和文件。(这里需要用到下面的判断文件是否存在,和创建文件目录以及文件方法)
创建URl获取下载地址,发送HttpURLConnection请求,使用if来判断请求是否成功;
将下载流放置输入流中,创建一个缓存区,再由缓存区写入文件。
这里用定义lenth来判断是否把下载的文件下载完成,如果完成会给lenth一个-1 的值,所以只要lenth不为-1,继续进行传输下载
 protected Integer doInBackground(String... strings) {
        //定义输入流和输出流
        InputStream inputStream=null;
        OutputStream outputStream=null;
        //定义文件对象
        File file = null;
        fileName=path+strings[1];
        //判断文件是否存在
        if (isFileExists(fileName)){
            //如果存在,直接返回,执行onPostExecute方法
            return 1;
        }

        try {
            URL url=new URL(strings[0]);
            HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();
            if (httpURLConnection.getResponseCode()==200) {
                inputStream = httpURLConnection.getInputStream();//获取到下载输入流

            }
            //创建目录
            createDir(path);
            //创建文件
            file = createFile(path+strings[1]);
            outputStream=new FileOutputStream(file);
            //创建缓存区
            byte buffer[]=new byte[4*1024];
            int length=0;
            int sum=0;
            //这里用lenth来判断是否把下载的文件下载完成,如果完成会给lenth一个-1 的值,所以只要lenth不为-1,继续进行传输下载。
            while ((length=inputStream.read(buffer))!=-1){
                outputStream.write(buffer,0,length);
                sum+=length;
                publishProgress(0,sum);

            }

              outputStream.flush();
              outputStream.close();
              inputStream.close();

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

        return 0;
    }
工具方法
 /**
     * 工具方法——判断文件已存在
     *
     * @return
     */
    private boolean isFileExists(String sDpath) {
        File file = new File(sDpath);
        if (file.exists()) {
            // 文件已存在
            return true;
        }
        return false;
    }

    /**
     * 工具方法——创建目录
     */
    private boolean createDir(String dirName) {
        File file = new File(dirName);
        boolean isCreateDir = file.mkdir();
        return isCreateDir;
    }
    /**
     * 工具方法——创建文件
     * @param
     */
    private File createFile(String fileName) {
        File file = new File(fileName);
        boolean isCreateFile  = false;
        try {
            isCreateFile = file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return file;
    }
再由doInBackground方法所返回的值,来判断主线程所需要做的操作:
如果返回的值为1,向用户显示文件存在
如果返回为0,将图片加载到界面上。
   @Override
    protected void onPostExecute(Integer integer) {
        super.onPostExecute(integer);
        switch (integer){
            case 1:
                Toast.makeText(context,"文件已存在",Toast.LENGTH_SHORT).show();
                btn.setEnabled(true);
                break;
            case  0:
                btn.setEnabled(true);
              Bitmap bitmap=BitmapFactory.decodeFile(fileName);
              imageView.setImageBitmap(bitmap);
               break;
基于HttpURLConnection的图片资源下载与展示实战教程 在当今的数字时代,网络编程已成为IT行业不可或缺的一部分,Java作为广泛使用的编程语言之一,其强大的网络功能使得开发者可以轻松创建分布式应用。本章将带你了解Java网络编程的基础,并概述如何利用Java从网络上获取图片资源。首先,我们定义一个简单的服务接口,用于处理图片请求。 阅读详情

相关推荐

Transformer 跨界物理建模:探索模拟动态物理系统方法与实践(PINN、流体力学、有限元)

是一个由 Nicholas Zabaras 团队开发的开源项目,托管于 GitHub,旨在将 Transformer 模型(最初在自然语言处理领域大获成功)应用于物理系统的建模与预测。该项目基于论文 ​*“Transformers for Modeling Physical Systems”*​(Neural Networks, 2022),探索了深度学习中的 Transformer 架构如何通过自注意力机制和 Koopman 嵌入来模拟动态物理系统。

源代码杀手的博客 1191

HttpURLConnection下载网络图片

1.这样获取网络图片对应的文件流 要下载一张网络图片,比如百度的Logo图片,地址是:http://www.baidu.com/img/bdlogo.gif 当然也可能是你所在的局域网, 比如把OA内部办公系统的新闻图片下载到本机。这种情况下你就得 确定是否要通过代理才能访问外部网络了。但是不管哪种情况,下载图片其实很平常,就是为了获取InputStream流 然后读取流里面的内容,保存到

影魔的专栏 2984

OpenClaw 自定义 Skill 开发完整指南(最新版)

OpenClaw 中的每个 Skill,本质是一套“能力描述 + 执行逻辑”的组合包,核心特征如下:核心载体:以文件夹为单位,文件夹内必须包含SKILL.md文件(能力描述核心);扩展文件:可选agent.py(Python 执行逻辑)、index.ts(TypeScript 执行逻辑)、(辅助文档/示例资源)等;核心优势:AI 通过阅读 SKILL.md 的自然语言描述理解技能,无需严格遵循代码接口,灵活度极高;

haolove527的专栏 2万+

使用HttpURLConnecion下载图片

关于下载的问题我们首先要了解下载图片需要一些权限 1.关于连接网络的权限 我们在启动项添加 这样手机就可以连接到网络 2.之后关于安卓手机的不同的版本我们需要添加不同的权限 5.0以下的版本不需要考虑这个权限问题他们只要考虑网络问题 其他的我们需要添加 这个权限条件 首先我们要考虑文件是否存在 使用if语句判断一下 然后根据潘丹的条件我们在进行下一步的结果代码如下 ...

qq_40929095的博客 376

Avalonia 超级详细学习指南

什么是 Avalonia?Avalonia 是一个开源的、跨平台的 GUI 框架,允许开发者使用 XAML 和 C# 构建现代化、高性能的桌面应用程序。与其他框架相比,Avalonia 具有强大的跨平台能力和灵活的界面设计。} }()Avalonia 的特点和优势跨平台性:Avalonia 可以在 Windows、Linux、macOS 等多个平台上运行,开发者可以编写一套代码,然后在不同的操作系统上运行相同的应用程序。

仰望星空的博客 1万+

2026必学:LangChain+Playwright爬虫,赋能RAG智能问答系统

RAG(检索增强生成)智能问答系统的效果,80%取决于数据源的质量。2026年,LangChain与Playwright的组合成为企业级RAG数据采集的黄金搭档:LangChain提供标准化的RAG数据处理链路,Playwright解决动态网页渲染的核心痛点,两者结合能高效采集、结构化处理各类网页数据(动态渲染页、复杂交互页、反爬页),为RAG系统提供高质量语料。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1705

HttpURLConnection根据URL下载图片

来看下最简单的根据URL下载图片,此方法在实际开发中,不建议使用,因为有些图片是下载不了的,比如百度上的一些图片,返回http的响应码是405 package cn.ztz.test; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io

java小酱油 1887

CMOS图像传感器——工作原理

CMOS图像传感器的曝光与读出

沧海一升的博客 9460

HttpURLConnection下载图片的两种方式

public class MainActivity extends AppCompatActivity { private ImageView iv; private String imageurl = "http://img06.tooopen.com/images/20161106/tooopen_sl_185050524199.jpg"; private Bitmap bi...

weixin_33704591的博客 354

论文必备 - YOLO26统计数据集中大、中、小目标数量,附完整代码和详细使用步骤

数据集是由微软开发维护的大型图像数据集。数据集标注类型对应任务包括物体检测、关键点检测、实例分割、stuff分割(没有特定形状的物体),全景分割人体关键点, 人体密度检测等。官网数据规模和样本特点数据规模大:总共包含32.8万张图像)。其中标注过的图像超过 20 万张,拥有 150 万个目标实例,数据量丰富,能够为模型训练提供充足的信息。类别丰富:包含80个目标类别和91个“stuff”类别。目标类别涵盖了日常生活中常见的各种物体,如人、动物、交通工具、生活用品等;stuff。

Limiiiing的博客 266

02-Redis 核心特性与数据结构详解:揭秘高性能的技术内核

本文深度拆解 Redis 高性能的技术内核:揭秘其凭“内存存储 + C 语言开发” 实现微秒级延迟、10 万 + QPS 的性能优势;详解 5 种基础数据类型(String/Hash 等)与 4 种扩展数据类型(Stream/Geospatial 等)的特性及场景;还介绍多语言支持、RDB/AOF 持久化、主从复制 / 哨兵 / 集群等高可用方案,助读者掌握 Redis 技术核心与实践逻辑。

蜗牛老师,专注编程领域 996

HttpURLConnection 下载图片

1. <?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.andro

a451319296的博客 601

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Android使用HttpURLConnection下载图片

讲到http就必需要了解URI和URL URI (uniform resource identifier)统一资源标志符; URL(uniform resource location )统一资源定位符(或统一资源定位器); 可以理解成URL是URI的子集,URI是一抽象的标识符,URL可以理解成具体的标识符;只要是网络上的资源就能找到唯一的URL。

DMT专栏 6553

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

java HttpURLConnection 下载网络图片 图片损坏

对于使用java.net 包下的 HttpURLConnection获取图片流 下载图片,个别图片打开显示图片损坏的,可以使用 HttpClients工具类试试。代码如下。 import org.apache.http.HttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl...

m0_37780228的博客 3817

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

HttpURLConnection 下载网络图片很慢

之前这么写,总是 在连一段时间后,下载变很慢 URL uri = new URL(imgSrc); InputStream in = uri.openStream(); HttpURLConnection httpConn = (HttpURLConnection)ur...

chuanglun8848的博客 1064

android 通过url下载图片,Android使用HttpURLConnection下载图片

讲到http就必需要了解URI和URLURI (uniform resource identifier)统一资源标志符;URL(uniform resource location )统一资源定位符(或统一资源定位器);可以理解成URL是URI的子集,URI是一抽象的标识符,URL可以理解成具体的标识符;只要是网络上的资源就能找到唯一的URL。目录结构效果图关键代码HttpUtils.java类pa...

weixin_39731807的博客 747

【Android基础知识】使用HttpUrlConnection下载图片

HttpUrlConnection是Android自带的网络请求类,这里通过两个实例介绍HttpUrlConnection类的使用 案例一:使用HttpUrlConnection 下载网络图片并显示在ImageView上,下载百度页面源码并显示在WebView上。 下载线程类,下载图片、源码并更新界面 public class HttpThread extends Thread{ priv

自由世界的专栏 871

android 从url下载图片,Android使用HttpURLConnection下载图片

讲到http就必需要了解URI和URLURI (uniform resource identifier)统一资源标志符;URL(uniform resource location )统一资源定位符(或统一资源定位器);可以理解成URL是URI的子集,URI是一抽象的标识符,URL可以理解成具体的标识符;只要是网络上的资源就能找到唯一的URL。目录结构效果图---------------------...

weixin_34298263的博客 327

HttpUrlConnection完成获取网页内容,图片,下载图片实例

Http请求: Http请求是客户端和服务器端之间,发送请求和返回应答的标准(TCP),客户端发送一个Http请求后,就与服务器建立起了TCP连接,服务端接收到请求并进行处理后返回给客户端相应数据。 HttpUrlConnection: HttpUrlConnetion是Java的标准指定网站发送GET请求、POST请求类,继承UrlConnection,可用于向指定网站发送GE...

shaochen2015821426的博客 5876

HttpURLConnection接口使用案例-图片下载

●HttpURLConnection 简介在 Android 开发中,应用程序经常需要与服务器进行数据交互,包括访问本地服务器以及远程服务器,这些都可以称为访问网络,此时就可以使用 HttpURLConnection 对象。

weixin_52973401的博客 1124

使用HttpURLConnection下载网络图片并显示

效果图如下: xml中代码: &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" ...

daluyang的博客 2422

【Android进阶】使用HttpURLConnection实现图片的下载与现显示

虽然我们在开发中经常使用别人已经开发好的开源框架,但是,了解这些框架底层的实现,能够让我们更好的理解功能的实现。 这篇文章主要介绍使用HttpURLConnection对象,实现图片文件的下载,以及显示。 我们的思路是,首先使用HttpURLConnection实现图片文件的下载,在下载结束之后,使用handler异步的显示图片。 因为功能比较简单,我只把代码贴在下面,注释很详细

赵凯强 3864

java用HttpURLConnection和GZIPInputStream下载gzip压缩的图片

最近用HttpURLConnection下载一个图片的时候,下载下来死活打不开,显示文件格式已经损坏,直觉这可能是个压缩文件,于是改成用winrar打开,果不其然。 进一步查看http head的Content-Encoding,没错是gzip,浏览器发现这个gzip报文头就会自动解压,而我们自己写代码就要用GZIPInputStream来处理了。 gzip这种压缩应该对html css j...

https://github.com/halloffamezwx 1212

Android基于HttpURLConnection的异步下载图片

总所周知在Android6.0以后抛弃了对HttpClient的支持,提倡使用HttpURLConnection来网络请求,今天要用的就是使用HttpURLConnection做的一个异步任务下载图片的例子,不罗嗦,上代码: 我这里有一张网络图片的地址 private String image_Path = "http://e.hiphotos.baidu.com/image/pic/

程序员吗? 938
上一篇: HttpUrlConnection
下一篇: 利用HttpUrlConnection和JSON来做简易的天气预报
nmwwbreed
博客等级 码龄9年 17粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值