安卓 加载网络图片并下载本地

android从网上下载图片到本地文件okhttp方法 Toast.makeText(getContext(), "下载失败", Toast.LENGTH_SHORT).show(); 阅读详情

安卓 加载网络图并下载

1,最近暂时不忙,终于有时间学习复习知识点了, 发现自己对于网络加载图并且下载不熟悉,于是乎补习了一下,嗯 下面我就说具体代码吧。

2,首先添加布局代码:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="250dp"
    android:layout_margin="15dp"
    android:id="@+id/iv_pic"
    android:src="@mipmap/ic_launcher"></ImageView>

<Button
    android:id="@+id/bt_download"
    android:layout_width="wrap_content"
    android:layout_gravity="center_horizontal"
    android:layout_height="wrap_content"
    android:text="下载图片" />

3,然后呢 添加 点击事件准备执行:

//加载网络图片 并且存储本地
btn_download.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        MyAsyncTask myAsyncTask=new MyAsyncTask(iv_pic,progressDialog);
        myAsyncTask.execute(path);
    }
});

4,最后呢,是关键的代码,我就直接全部复制了,哈哈哈哈:

package com.example.myviewtwo.study.threen;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Environment;
import android.util.Log;
import android.widget.ImageView;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.Random;

public class MyAsyncTask extends AsyncTask<String, Integer, Bitmap> {

    private ImageView iv_pic;
    private ProgressDialog progressBarDialog;

    boolean isDownload=false;

    private int progress333;
    private int downloadCount;

    private String mSavePath;


    public MyAsyncTask(ImageView imageView, ProgressDialog p) {
        iv_pic = imageView;
        progressBarDialog = p;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        Log.d("info", "准备执行");
        progressBarDialog.setTitle("当前任务");
        progressBarDialog.setMessage("正在下载图片,请稍后...");
        progressBarDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置进度条样式,横项
        progressBarDialog.show();
    }

    @Override
    protected Bitmap doInBackground(String... params) {
        Log.d("info", "开始执行");
        String path=params[0];
        Log.d("info","提交的访问图片地址是==="+path);

        // 获得存储卡的路径
        String sdpath = Environment.getExternalStorageDirectory() + "/";
        mSavePath = sdpath + "download";
        File file = new File(mSavePath);
        // 判断文件目录是否存在
        if (!file.exists()) {
            file.mkdir();
        }

        Bitmap bitmap=getBitmap(path);

        return bitmap;
    }


    public Bitmap getBitmap(String url) {
        Bitmap bm = null;
        try {
            URL iconUrl = new URL(url);
            URLConnection conn = iconUrl.openConnection();
            HttpURLConnection http = (HttpURLConnection) conn;
            int length = http.getContentLength();

            conn.connect();
            // 获得图像的字符流
            InputStream is = conn.getInputStream();

            //获取图片 并且显示
            BufferedInputStream bis = new BufferedInputStream(is, length);
            bm = BitmapFactory.decodeStream(bis);

            bis.close();
            is.close();// 关闭流
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        return bm;
    }


    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        Log.d("info", "显示进度");
        progressBarDialog.setProgress(values[0]);
    }

    @Override
    protected void onPostExecute(Bitmap bitmap) {
        super.onPostExecute(bitmap);
        Log.d("info", "执行返回结果");
        progressBarDialog.dismiss();

        iv_pic.setImageBitmap(bitmap);

        //保存到本地
        SavaImage(bitmap);


    }




    /**
     * 保存位图到本地
     * @param bitmap
     * @return void
     */
    public void SavaImage(Bitmap bitmap){

        File file=new File(mSavePath);
        FileOutputStream fileOutputStream=null;
        //文件夹不存在,则创建它
        if(!file.exists()){
            file.mkdir();
        }
        try {

//            判断SD卡是否存在,并且是否具有读写权限
            if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
                fileOutputStream=new FileOutputStream(mSavePath+"/"+System.currentTimeMillis()+".jpg");
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100,fileOutputStream);
                fileOutputStream.close();
                Log.d("info","图片下载完成了");
            }else{
                Log.d("info","没有文件写入权限");
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

}

OK ,兄弟们,这就是代码了,具体的你们一看便知道,不过我还是觉得不够好,后期自己再优化吧。感谢收看 ,

Android 保存资源图片到相册最新写法适用于Android10.0及以上 一、首先在AndroidManifest.xml中加入权限 <!--读取存储卡中的内容 修改或删除存储卡中的内容--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 因为这属于危险权限,需要在java代码中动态申请。 二、activity_save_image.xml 布局一个要保存的图片,一个保存按钮 <?xml version="1.0" encoding="utf- 阅读详情

相关推荐

保姆级教程:用Python从UCI下载波士顿房价数据集,手把手跑通线性回归、岭回归和Lasso

本文提供了一份保姆级教程,详细讲解如何用Python从UCI下载波士顿房价数据集,并手把手实现线性回归、岭回归和Lasso回归模型。内容涵盖数据获取、清洗、特征分析到模型构建与评估的全流程,特别适合机器学习初学者掌握波士顿房价预测这一经典案例。

weixin_34254848的博客 478

Android开发之保存图片到相册的三种方法详解

Android开发之保存图片到相册的三种方法详解

chenyaqun的博客 1874

Python 高级语法:闭包

闭包(Closure)是函数式编程中的一个重要概念。在Python中,闭包可以简单理解为:一种特殊的函数。外函数:嵌套函数中最外层的函数称之为外函数。内函数:嵌套函数中最内层的函数称之为内函数;内函数引用了外函数的临时变量;外函数的返回使用了临时变量的内函数。

moment159的博客 2354

一个Android下载网络图片显示并保存到系统相册的完整案例

在 Android开发 中,下载图片保存到本地是常见的需求,看似简单但其中包含了一些比较关键的知识点,比如网络请求、文件下载、动态权限申请、文件保存、移动到系统相册等本文我们介绍了一个下载网络图片显示并保存到系统相册的完整小案例,包含了一些关键实用的知识点:Retrofit 网络请求、RxJava 处理网络数据流、动态权限申请、文件保存IO操作、ContentResolver 移动文件到系统相册。

fxjzzyo的博客 3028

水电站数字孪生:水力发电在可视化领域的应用

为智慧水坝领域提供了 B/S 架构的基于 WebGL 的图形引擎,与 GIS、粒子仿真、虚拟现实、边缘计算等技术相结合,融合多元业务系统数据,形成数字孪生界面,助力水利水电工程进一步提升数字化水平,乃至为整个工业领域添砖加瓦。

二三维数据可视化/数字孪生 2255

解决屏幕不亮难题:慷智SerDes DE信号极性配置避坑指南

本文深入探讨了基于慷智AIM95x系列SerDes芯片的嵌入式显示系统开发中,因DE信号极性配置不匹配导致屏幕不亮的典型故障。文章详细解析了DE信号的核心作用与极性定义,提供了慷智SerDes芯片中DE极性寄存器的具体配置方法与调试记录,并给出了从隔离问题、对比时序到波形验证的系统性排查流程,帮助工程师快速定位并解决此类隐蔽问题。

weixin_29185493的博客 142

Android代码获取string、mipmap、color资源

1.直接R.**.xx获取: this.getString(R.string.zm) //Activity getActivity().getString(R.string.zm) //Fragment .setBackgroundResource(R.mipmap.zm) //TextView设置背景图 .setImageResource(R.mipmap.zm) //Image...

weixin_40420578的博客 3186

PaddleOCR实战指南:从环境搭建到自定义模型训练

本文提供了PaddleOCR从环境搭建到自定义模型训练的完整实战指南。详细介绍了使用Anaconda或Docker搭建稳定开发环境、准备与标注数据集、进行文本检测与识别模型训练的核心步骤与参数调优技巧,并分享了数据增强、模型微调及解决实际项目难题的实用方法,帮助开发者高效掌握PaddleOCR应用。

gold的博客 644

Android 加载网络图片并下载至本地SdCard

package com.example.myimagedemo;import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.

zss1973的博客 614

【ARMv8 异常模型入门及渐进7 - GIC及安全中断介绍】

GIC-v3中,引入了支持2种安全状态(secure state),也就是对于中断,根据secure状态,分为安全中断和非安全中断。当然也可以只支持一种安全状态。这里的2种安全状态和1种安全状态,主要是影响中断分组,所使用IRQ和FIQ管脚的映射,以及gic中的寄存器访问。

CodingCos的博客 2116

IEC 61400-1:2019 中的 Vref ——从分类基准到极端风模型的应用

IEC 61400-1:2019 中的 Vref ——从分类基准到极端风模型的应用

weixin_46713695的博客 1288

android导入图片资源,Android开发实现加载网络图片并下载至本地SdCard的方法

Android开发实现加载网络图片并下载至本地SdCard的方法发布时间:2020-08-25 01:00:02来源:脚本之家阅读:176作者:z-Coder本文实例讲述了Android开发实现加载网络图片并下载至本地SdCard的方法。分享给大家供大家参考,具体如下:package com.example.myimagedemo;import java.io.BufferedOutputStre...

weixin_28796657的博客 312

YOLO车辆测距、车辆识别与单目测距

YOLO(You Only Look Once)是一种实时物体检测系统,能够识别视频或图像中的多个对象,并确定其位置。结合车辆识别与单目测距技术,YOLO可以用于交通监控、自动驾驶等应用场景,通过单个摄像头实现车辆的识别与距离测量。YOLO结合单目测距技术,在多个应用领域展现出巨大的潜力与灵活性。其实时性和准确性为智能交通、自动驾驶等领域提供了强有力的技术支持。

走向CTO的路上... 1698

Android实现下载图片资源包,Android开发实现加载网络图片并下载至本地SdCard的方法...

本文实例讲述了Android开发实现加载网络图片并下载至本地SdCard的方法。分享给大家供大家参考,具体如下:package com.example.myimagedemo;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileNotFoundException;import java.io.File...

weixin_39765209的博客 378

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

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

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Android下载网络图片资源

从网络下载图片资源在各种APP中很常见,比如很多APP都有广告轮番功能,这些广告图片通常是从服务器获取的,这里就需要从服务器上下载图片资源并显示。

下半夜的风 1万+

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

android 图片缓存本地,android异步加载图片并缓存到本地的方法

访问图片在项目中非常常见,如果我们每次请求图片时都访问无法获取,因为它将消耗大量的流量,并且图片占用大量的内存空间,如果有太多的图片没有释放,很容易导致内存溢出,那么android异步加载图片并缓存到本地的方法大家知道吗?一起跟着爱站技术频道小编来了解一下吧!首先看一下异步加载缓存本地代码:publicclassAsyncBitmapLoader{/***内存图片软引用缓冲*/privateHas...

weixin_35056701的博客 554

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

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

android开发如何加载图片,Android开发之加载图片的方法

本文实例讲述了Android开发之加载图片的方法。分享给大家供大家参考。具体分析如下:加载网络上的图片需要在manifest中配置访问网络的权限,如下:如果不配置这个权限的话,会报错:unknown host exception。package com.example.loadimgfromweb;import java.io.InputStream;import android.app.Acti...

weixin_30284287的博客 818

关于HttpUrlConnection加载和下载网络图片的学习

1.首先在layout布局文件里创建Button和ImageView两个控件 &lt;Button android:paddingTop="10dp" android:id="@+id/load_btn" android:layout_width="match_parent" android:layout_height="wra...

HW_666的博客 777

网络图片加载到本地,优先从本地加载

简单实现加载网络图片在本地,优先显示存在的本地图片 package com.example.wuhan.imageload; import android.app.Activity; import android.net.Uri; import android.os.AsyncTask; import android.os.Environment; import android.sup

qq_36613935的博客 472

android保存本地图片路径,Android 实现图片保存到本地并调用本地地址显示图片

话不多说上代码public class MainActivity extends AppCompatActivity {private Button cunn;private Button xian;private ImageView ttt;//private EditText rrr;public static final int EXTERNAL_STORAGE_REQ_CODE = 10...

weixin_30166691的博客 2379

ListView通过自定义的Adapter实现异步下载显示网络图片

eoe先说一下思路,开始让一张放在res/drawable里的图片代替网络图片,加进ListItem,现在显示的就是本地图片,然后新开一个线程循环下载网络图片,每下完一张,替换原来显示的本地图片,更新ListView。 刚开始做的时候,乱配器用的是SimpleAdapter,但是后来发现,SimpleAdapter只能加载事先放在res/drawable,不能加载Bitmap,或者是Draw

taki_dsm的专栏 1114

Android下载网络图片并保存在本地相册

package com.thfund.bigtree.StarCounselor.activity; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android

XST891205的博客 3597

Andserver 配置本地文件浏览器实现webview展现本地图片

接到一个需求,需要在安卓的vue的本地页面上加载本地的图片,而不是网络图片,这样当设备没有网络的时候图片也能正常显示,因为项目使用的是andserver+webview这种项目结构,用Andserver来解决这个问题最好不过;大概的思路就是先将需要加载的网络图片下载到本地,然后通过andserver提供的WebConfig增加一个类似本地的文件浏览器静态网站,当你的本地端口访问该路径时就可以加载出保存好的本地图片;如果AndServer自带的网站不够用或者和开发者的需求有出入,那么我们可以自定义网站。

我怀里的猫的博客 5623

基于cocos2dx3.3,AnyImageView类实现网络加载图片,或者加载本地图片

实现了cocos2dx3.3,AnyImageView类实现网络加载图片,或者加载本地图片 代码下载 调用方法: 导入头文件 #include "AnyImageView.h" const char *url = "general/img/arenabattlessfiv_gameover_player.png"; //本地图片 //const char

u010434924的专栏 2043

【Android】轮播图图片的本地保存及读取

一、轮播图控件及图片加载 对于Android端的轮播图控件,我这边选用的是banner库 //轮播图 compile 'com.youth.banner:banner:1.4.9' //Glide compile 'com.github.bumptech.glide:glide:3.8.0' 二、banner初始化 1.引入banner布局 &lt;com.youth....

张迅之的博客 2282

Android图片保存到本地,并再从本地获取图片

package com.shao.demo.bitmapdemo;import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Environment; import android.util.Log; import andro

zhangwenhaojf40it的博客 8936
上一篇: 安卓 调用系统自带日历弹出框
下一篇: 安卓下载文件
mawlAndroid
博客等级 码龄10年 5粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值