Android 网络图片下载保存本地及插入系统相册

Android:多线程下载&网络图片 Android:URL请求网络图片,异步网络请求,多线程下载,断点下载 阅读详情

一、保存图片到本地

public static void saveToSystemGallery(Context context, Bitmap bmp) {
        // 首先保存图片
        File appDir = new File(Environment.getExternalStorageDirectory(), "vgmap");
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            bmp.compress(Bitmap.CompressFormat.JPEG, 100, fos);
            fos.flush();
            fos.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        // 其次把文件插入到系统图库
        try {
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    file.getAbsolutePath(), fileName, null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 最后通知图库更新
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
    }

二、 保存网络图片到本地,同时插入到系统相册

    /**
     * 下载 分享海报图片 并保存本地
     */
    private void mDownloadPosterPic(String url) {
        String fileDir = Environment.getExternalStorageDirectory() + "/temp";
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(fileDir);
        OkHttpUtils.get(url)
                .tag(this)
                .execute(new DownloadFileCallBack(fileDir, fileName));//保存到sd卡
    }
   saveToSystemGallery(mContext, file, fileNameNew);  //把文件插入到系统图库
    /**
     * 保存图片到本地,其次把文件插入到系统图库
     *
     * @param context
     * @param file
     * @param fileName
     */
    public static void saveToSystemGallery(Context context, File file, String fileName) {
        try {
            MediaStore.Images.Media.insertImage(context.getContentResolver(),
                    file.getAbsolutePath(), fileName, null);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        // 最后通知图库更新
        context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(file.getAbsolutePath())));
    }

三、网络URL图片地址转Bitmap 

以下方法需要一个线程去访问

    public Bitmap getBitmap(String imgUrl) {
        InputStream inputStream = null;
        ByteArrayOutputStream outputStream = null;
        URL url = null;
        try {
            url = new URL(imgUrl);
            HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
            httpURLConnection.setRequestMethod("GET");
            httpURLConnection.setReadTimeout(2000);
            httpURLConnection.connect();
            if (httpURLConnection.getResponseCode() == 200) {
                //网络连接成功
                inputStream = httpURLConnection.getInputStream();
                outputStream = new ByteArrayOutputStream();
                byte buffer[] = new byte[1024 * 8];
                int len = -1;
                while ((len = inputStream.read(buffer)) != -1) {
                    outputStream.write(buffer, 0, len);
                }
                byte[] bu = outputStream.toByteArray();
                Bitmap bitmap = BitmapFactory.decodeByteArray(bu, 0, bu.length);
                return bitmap;
            } else {
                Log.d(TAG, "网络连接失败----" + httpURLConnection.getResponseCode());
            }
        } catch (Exception e) {
            // TODO: handle exception
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (outputStream != null) {
                try {
                    outputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
        return null;
    }

更多相关问题可参考:Android网络URL图片地址转Bitmap并且保存到本地

安卓案例:利用URLConnection下载图片 利用URLConnection下载网络图片;利用Python爬取单张网络图片 阅读详情

相关推荐

Android使用webView长按保存下载网络图片

本文实例为大家分享了Android使用webView长按保存下载网络图片的具体代码,供大家参考,具体内容如下 最近发现在webView的setOnLongClickListener中可以获取到WebView.HitTestResult,根据获取的HitTestResult的Type来判断做不同的处理。通过判断Type的类型获取点击图片的url,然后把图片下载到本地,发送广播通知系统图库进行更新,在系统图库中查看下载的图片。运行Demo在网页中对图片做长按点击即可下载网络图片 直接上代码: 下面附有Demo下载:点击打开链接 package demo.sam.webview_demo; im

Android Studio —— 下载网络图片显示

效果     简介      加入线程进行下载,下载完毕后显示。     源码     代码 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://sch

1236

从勒索软件攻击到数据重生:SQL Server MDF文件修复的实战生存指南

本文详细介绍了SQL Server MDF文件在遭遇勒索软件攻击后的修复策略,重点解析了Recovery Toolbox工具链的应用流程。从灾难评估到数据验证,提供分阶段修复操作、高级修复技术及防御加固方案,帮助企业快速恢复数据库并提升安全防护能力。

weixin_28327051的博客 715

Android下载网络图片

在Android中下载网络图片,一般使用URL对象调用openConnection()方法获取URLConnection对象,然后从该对象中获取流。该操作类似于访问web服务器,而web服务器获取到的是HttpURLConnection。 使用该方法一般为小文件(几十kb到几百kb),大文件建议使用DownloadManager。

m0_57150356的博客 1099

Mask2Former实战:用SwinTransformer+Deformable Attention搞定图像分割三大任务

本文实战解析了Mask2Former模型如何统一解决语义、实例和全景分割三大任务。通过集成Swin Transformer骨干网络与创新的Deformable Attention及Masked Attention机制,详细介绍了模型构建、训练策略及在COCO数据集上的性能表现,为开发者提供了高效的图像分割解决方案。

tech5的博客 246

Nordic BLE芯片RF测试

BLE设备在过蓝牙BQB,FCC,ETSI等各种认证时实验室一般都需要做RF各项指标的测试。Nordic公司的SDK包中提供了两种RF测试程序,一种是DTM,另一种是Radio test。这两种都可以做RF指标测试但各自又有区别。DTM是按照蓝牙规范中Direct test mode所要求数据格式测试(数据格式定义参看:Bluetooth Core Specification v5.0->...

5639

Android图片下载2种方法

1、最常用ImageLoader//调用方法 ImageLoader.getInstance().displayImage("url",mImg_photo, imageOptions);//设置图片属性:下载时的图片,下载失败的图片,是否圆角DisplayImageOptions imageOptions = new DisplayImageOptions.Builder().cach

Metis100的专栏i6zHW5lX(fDT 2103

Vue3+Vite+Electron桌面应用开发:从零到打包的完整避坑指南

本文是一份详尽的Vue3+Vite+Electron桌面应用开发实战指南。文章从项目初始化、环境配置、主进程构建、Vite深度优化,到最终的打包配置与优化,系统性地讲解了使用现代前端技术栈开发跨平台桌面应用的完整流程,并重点分享了开发与打包过程中的常见“坑点”与解决方案,旨在帮助开发者高效构建稳定可交付的桌面端应用。

hh234的博客 109

Android 保存图片(包括网络图片)到单独的相册

我们经常会遇到将图片保存到本地的操作,而且有时候我们需要将图片保存到一个单独的相册,比如微信保存的图片是放到微信相册,微博放到了微博相册。 我们保存的图片可能有很多的类型,比如 Bitmap、网络图片、字节数组、资源 ID 等,根据不同的类型我们需要做不同的处理。 我们先看看怎么把 Bitmap 保存到本地相册: public static void saveImageToGall...

Young_Time的博客 1731

VMware Converter 6.2.0保姆级教程:从物理机到ESXi主机的完整迁移指南(含常见错误排查)

本文提供VMware Converter 6.2.0从物理机迁移至ESXi主机的完整保姆级教程。详细解析了迁移前的环境规划、核心转换过程步骤、版本差异对比,并重点针对代理安装失败、任务卡顿、虚拟机无法启动等常见错误提供了实战排查与解决方案,确保P2V迁移顺利进行。

sam99的博客 380

uniapp - 解决在线预览PDF文件空白打不开的问题,无论是后端下载二进制文件流pdf还是本地插件或JS预览查看打开白屏不显示,详细排查解决(适用于移动端H5网页、安卓/苹果app、微信小程序)

uniapp App端 实现pdf文件预览打开白屏解决,uniapp 在线预览pdf打开一片空白,跨域白屏,uni-app中使用WebView预览PDF文件打开空白,微信小程序(uniapp)预览PDF空白怎么办,下载PDF文件流后打开空白或无法打开的问题,Uniapp H5网页下载二进制pdf文件页面空白以及解决文件损坏打不开的情况,Uniapp app在线预览pdf文件流,PDF加载出来怎么办,服务器后端返回PDF文件流后前端进行下载但打开后一片白屏,解决pdf文件流,预览全是空白页,pdf文件流,下载

🏆 前端领域优质创作者 1万+

android实现将url图片下载到手机相册

在Android中将URL图片下载到手机相册的实现 在Android应用开发中,图片的下载是一项常见的需求。为了帮助刚入行的小白开发者,我将详细介绍如何将URL图片下载到手机相册的流程,并提供相应的代码示例与详细注释。以下是整体流程的步骤展示。 整体流程 步骤 描述 步骤1 添加必要的权限 步骤2 使用网...

weixin_42524824的博客 577

详解YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署

YOLO(You Only Look Once)系列算法因其高效、准确等特点而备受瞩目。由2023年Ultralytics公司发布了YOLO的最新版本YOLOv8是结合前几代YOLO的基础上的一个融合改进版。本文YOLOv8网络结构/环境搭建/数据集获取/训练/推理/验证/导出/部署,从网络结构的讲解从模型的网络结构讲解到模型的部署都有详细介绍,同时在本专栏中还包括YOLOv8模型系列的改进包括个人提出的创新点,传统卷积、注意力机制、损失函数的修改教程,能够帮助你的论文获得创新点。

Snu77的博客 8万+

安卓开发关于图片保存到本地相册并显示功能

现在越来越多的项目要用到保存网络图到本地的功能 尤其是一些电商项目。最近做项目注意到一个细节,如果只是保存到本地并不能在相册直接显示出来,需要通知相册更新。 我项目使用的图片加载工具是glide可以很方便的下载图片获取到本地图片地址,如果有时候是bitmap也可以直接保存到本地。 private void saveImageLocal(String imgUrl) { try {

Vitalent的博客 1089

AutosarMCAL开发——基于EB MCU驱动

本文为博主个人学习总结记录,如有不正,欢迎指正。

qq_45583706的博客 922

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

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

android glide下载图片,Glide下载图片并保存到相册,兼容绝大机型

最近有个需求需要下载封面图片保存到本地,并且同步到相册中。利用Glide、Rxjava封装下以便复用。//保存网络图片到相册public static void saveImageUrlToGallery(Context context, String url,OnListener listener) {Observable.just(url).map(new Func1() {@Override...

weixin_36116008的博客 1074

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Android 保存图片到相册却不在“照片”中显示,只在相簿中显示

解决Android保存图片到相册不显示在“图片”中的问题

wangzp的博客 2018

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

获取网络图片并下载到本地相册

public class MainActivity extends Activity { //声明地址 private Button btn; private ImageView img; private String url = "http://imgstore04.cdn.sogou.com/app/a/100520024/877e990117d6a7ebc6

showkey111的博客 586

Android工具类篇 图片插入系统图库

public static void saveToSystemGallery(Context context, Bitmap bmp) { // 首先保存图片 File appDir = new File(Environment.getExternalStorageDirectory(), "vgmap"); if (!appDir.exists()) { appDir.mkdir(); } String

圈池 879

网络图片下载到本地相册

知道图片的url,然后通过Picasso进行图片加载 发送广播通知系统图库更新相册Picasso.with(DiaActivity.this).load(url).into(new Target() { @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom fro

果酱大师的博客 423

手机壁纸设置以及图片下载保存到本地

首先下载网络图片(权限自己处理) public Bitmap GetImageInputStream(final String imageurl, final int i) { //i根据自己的业务做的处理 new Thread(new Runnable() { @Override public void run() { tr...

qq_33313551的博客 1666

关于安卓保存网络图片并更新图库

安卓保存网络图片并通知图库更新最近有个需求刚好是这个,但是发现网络图片保存到手机后图库并没有及时刷新出来,捣鼓了一上午终于搞出来了废话不说直接上代码: 首先是写个异步请求网络图片// 异步任务 直接传图片地址 public void addTask(String url) { new AsyncTask<String, Void, Bitmap>() {

plzyxy的博客 756

【Android】在res中的图片下载导入到手机相册中的实现

任务需求 产品需求是点击下载图片,将公司的二维码存储到用户手机中; 逻辑整理 实际上这张二维码没有走网络,只是在项目的res文件夹中缓存着。点击后将会读取bitmap资源然后重新存储到相册中。 代码实现 public void saveImageToGallery(Context context,ImageDownLoadCallBack imageDownLoadCallBack) { callBack = imageDownLoadCallBack; //获取二维码图片资

weixin_44002043的博客 1356

uni-app跨平台开发:实现图片视频保存到手机相册的完整解决方案

在移动应用开发中,文件存储与权限管理是构建健壮应用的基础。其核心原理涉及操作系统对用户隐私数据的保护机制,尤其是Android的作用域存储(Scoped Storage)和iOS的Photos Framework,它们通过严格的沙盒模型和权限申请流程来管理媒体文件访问。这项技术的工程价值在于,开发者必须跨越平台差异,在尊重用户隐私的前提下,实现媒体文件从应用沙盒到公共相册的安全写入。典型的应用场景包括社交应用的内容发布、图片编辑工具的保存功能,以及任何需要将生成的媒体文件持久化到用户设备的功能。本文以uni

weixin_33937778的博客 356

根据网络路径存储图片并在图库显示

package com.example.administrator.mytest; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri;

前人挖坑,后人种(pen) 1175

发现了阿里云 APP 的一个小 BUG

...

Shum Laboratory 726
上一篇: 解读Android 消息队列和Looper
下一篇: Android Studio 打完Release包接口数据返回正常,app数据不显示怎么回事?
LXB-89
博客等级 码龄11年 34粉丝 81原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值