唐山阿里云代理商:android 获取网络图片存粗到本地

下面是一个间单的示例,关于如何在 Android 中从网络获取图片并将其存储到本地:

首先,需要在AndroidManifest.xml文件中添加以下权限:

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

然后,你可以使用如下代码来获取网络图片并存储到本地:

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Environment;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        new Thread(new Runnable() {
            @Override
            public void run() {
                getPicture("http://your-image-url-here");
            }
        }).start();

    }

    public static void getPicture(String url) {
        try {
            URL imageUrl = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
            conn.setConnectTimeout(6000);
            conn.setDoInput(true);
            conn.setUseCaches(false);
            conn.connect();
            InputStream is = conn.getInputStream();
            Bitmap bitmap = BitmapFactory.decodeStream(is);
            saveImageToGallery(MainActivity.this, bitmap);
            is.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static boolean saveImageToGallery(Context context, Bitmap bmp) {
        // 首先保存图片
        File appDir = new File(Environment.getExternalStorageDirectory(), "your-folder-name");
        if (!appDir.exists()) {
            appDir.mkdir();
        }
        String fileName = System.currentTimeMillis() + ".jpg";
        File file = new File(appDir, fileName);
        try {
            FileOutputStream fos = new FileOutputStream(file);
            //通过io流的方式来压缩保存图片
            boolean isSuccess = bmp.compress(Bitmap.CompressFormat.JPEG, 60, fos);
            fos.flush();
            fos.close();
            //把文件插入到系统图库
            MediaStore.Images.Media.insertImage(context.getContentResolver(), file.getAbsolutePath(), fileName, null);
            //保存图片后发送广播通知更新数据库
            Uri uri = Uri.fromFile(file);
            context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
            if (isSuccess) {
                return true;
            } else {
                return false;
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

注意,这个示例中的URL是一个示例,你需要替换成你的实际图片URL。

这个示例会创建一个新的线程去获取和保存图片,以避免在主线程中进行网络和I/O操作,这可能会阻塞UI并导致ANR错误。

这是一个在Android中从网络获取图片并存储到本地磁盘的基本步骤。在这个过程中,需要使用到Android的网络请求、文件I/O流和异步任务处理等知识。

下面提供一个示例代码来实现这个需求:

唐山阿里云代理商:android 获取网络图片存粗到本地
public class DownloadImage {

    private Context context;

    public DownloadImage(Context context) {
        this.context = context;
    }

    public void download(final String imageUrl, final String imageName){
        new AsyncTask<Void, Void, Void>(){

            @Override
            protected Void doInBackground(Void... voids) {
                InputStream inputStream = null;
                try {
                    URL url = new URL(imageUrl);
                    HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                    connection.setRequestMethod("GET");
                    connection.setDoInput(true);
                    connection.connect();
                    if(connection.getResponseCode() == 200){
                        inputStream = connection.getInputStream();
                        Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                        saveImageToGallery(context,bitmap,imageName);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }finally {
                    try {
                        if(inputStream != null){
                            inputStream.close();
                        }
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
                return null;
            }
        }.execute();
    }

    public void saveImageToGallery(Context context, Bitmap bitmap, String fileName){
        File file = new File(Environment.getExternalStorageDirectory(), fileName+".png");
        try {
            FileOutputStream out = new FileOutputStream(file);
            bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
            out.flush();
            out.close();

            // Update the system gallery
            Intent scannerIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
            Uri contentUri = Uri.fromFile(file);
            scannerIntent.setData(contentUri);
            context.sendBroadcast(scannerIntent);

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

藉助这段代码,你可以在需要下载图片并存储到本地的地方调用 download() 方法即可。

注意,这段代码需要 INTERNETWRITE_EXTERNAL_STORAGE 权限,在使用前需要在 Manifest 文件中声明。

你可以在你的Activity中这样来调用:

String imageUrl = "http://example.com/example.png";
String imageName = "testImage";
new DownloadImage(this).download(imageUrl, imageName);

发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/161325.html

(0)
luotuoemo的头像luotuoemo
上一篇 2024年3月14日 01:57
下一篇 2024年3月14日 01:58

相关推荐

  • 漳州阿里云代理商:阿里云服务器能过户吗

    漳州阿里云代理商:阿里云服务器能过户吗 引言 阿里云是当前领先的云计算服务提供商,为企业和个人提供高性能、可靠、安全的云计算基础设施。作为漳州地区的阿里云代理商,我们将从阿里云的优势和好用之处来探讨阿里云服务器是否可以进行过户。 阿里云的优势 阿里云拥有庞大的服务器基础设施和最先进的技术,使其具备许多优势。 1. 可靠性 阿里云服务器建立在全球领先的数据中心…

    2024年1月26日
    19100
  • 阿里云服务器连接本地数据库怎么用啊

    使用阿里云服务器连接本地数据库需要进行以下几个步骤: 确保本地数据库可以远程访问:在本地数据库服务器上,确保数据库的配置文件(如MySQL的my.cnf)中允许远程访问。主要需要修改bind-address和skip-networking的配置,将其设置为允许远程连接。 在阿里云服务器上安装数据库客户端:在阿里云服务器上安装本地数据库的客户端,如MySQL的…

    2023年9月12日
    19300
  • 阿里云企业邮箱的邮件营销活动效果评估指标体系的完善和应用及对营销策略的指导?

    阿里云企业邮箱的邮件营销活动效果评估指标体系的完善和应用 随着数字营销的迅猛发展,邮件营销已成为企业进行客户关系管理、品牌推广和销售转化的重要手段。阿里云企业邮箱不仅为企业提供了稳定、安全的邮件服务,还为邮件营销活动提供了全面的支持。本文将探讨阿里云企业邮箱的邮件营销效果评估指标体系的完善及其应用,并结合阿里云企业邮箱代理商的优势,分析其对营销策略的指导意义…

    2024年11月1日
    25100
  • 合肥阿里云代理商:api 商业模式

    合肥的阿里云代理商在他们的API商业模式上可能采取了多种策略,旨在为各种规模的企业提供云计算服务。阿里云作为中国领先的云计算服务提供商,提供广泛的服务,包括但不限于云服务器、数据库服务、云存储和大数据处理。代理商通过提供这些服务,能够满足企业在数字化转型过程中的需求。下面是一些可能的商业模式元素: 按需定价:合肥的阿里云代理商可能会提供按需定价模式,客户根据…

    2024年3月17日
    15600
  • 阿里云企业邮箱的邮件服务器安全配置能定期自动检测吗?

    阿里云企业邮箱邮件服务器的安全配置及优势 引言 阿里云企业邮箱作为企业级通信的关键工具,提供了安全、稳定、高效的邮件服务。为了保证数据和通信的安全,阿里云企业邮箱在邮件服务器的安全配置方面做了大量优化。特别是其自动检测功能,能够帮助企业用户定期检查邮件服务器的安全状况。本文将详细介绍阿里云企业邮箱的安全配置和其带来的使用优势。 自动安全检测功能 阿里云企业邮…

    2024年10月30日
    13200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

4000-747-360

在线咨询: QQ交谈

邮件:ixuntao@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
购买阿里云服务器请访问:https://www.4526.cn/